Jump to content
robertdccaetano

Passar objeto para JSON

Recommended Posts

Pessoal boa tarde, tenho uma dúvida em relação a um problema que estou enfrentando aqui no php ao codificar, podem me ajudar por favor?

 

É o seguinte, precisava passar dois objetos para o json_encode(), e capturar o atributo "nome" deles num fragmento, porém o callBack passando pelo json_encode está levando só um objeto, observem o print por favor.

 

Obs: Ja iterei pelo foreach, mas mesmo assim está passando só um objeto pelo encode 

3jun20_2.png

3jun20.png

3jun20_1.png

Share this post


Link to post
Share on other sites

O valor atual do elemento em $callBack['nome'], esta sendo substistuido a  cada interação do foreach. E sempre vai adicionar o último item.

Você pode fazer isto, sem utilizar o foreach:

$callBack['items'] = $items;

Caso queira remover um item do array, antes de adicionar na variavel $callBack, use unset

 

Ou array_map, para mapear só item nome

$callBack["nome"] = array_map(function ($item) { 
	return $item['nome']; 
}, $itens);

 

Share this post


Link to post
Share on other sites

Uma forma mais simples de resolver é agregar os valores a outra variável, e no final repassar todos os valores para $callBack["nome"]

$inc = [];
foreach ($itens as $item) {
    //dessa forma vai somente os nomes listados
   // $inc[] = $nome;

   //dessa forma ganha uma chave 'nome'
    $inc[] = ['nome' => $item->nome];

}
$callBack["nome"] = $inc;//um array com todos os nomes

json_encode($callBack);

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By rodrigofv1994
      <?php $servername = "localhost"; $username = "root"; $password = ""; $dbname = "ajax";   $email = $_POST['email']; $senha = $_POST['senha'];   // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) {   die("Connection failed: " . $conn->connect_error); }   $sql = 'INSERT INTO usuarios VALUES (default,'$email','$senha')';   if ($conn->query($sql) === TRUE) {   echo "New record created successfully"; } else {   echo "Error: " . $sql . "<br>" . $conn->error; }   $conn->close(); ?>
    • By Camilavip
      Boa noite, alguém por acaso sabe um modo simples de se desativar um cadastro automaticamente após um período?
      Deixa eu explicar. Eu cadastro um cliente, em que na tabela do banco de dados tem o campo "ativo" onde 1 é ativado e 0 é desativado. Então eu queria cadastrar esse cliente e o ativar, mas que no período de 30 dias por exemplo ele se desativasse sozinho.  Alguém sa8e algo simples nesse sentido?
    • By Camilavip
      Boa noite a todos, estou tendo um probleminha em gravar a senha criptografada, na verdade editar, pois quando gravo vai certo, mas na edição não está dando certo.
      A baixo quando cadastro o cliente é assim, e está indo perfeito.
       
      $nome = $_POST['nome']; $email = $_POST['email']; $login = $_POST['login']; $senha = sha1($_POST['senha']); Mas na hora da edição como está um pouco diferente estou tentando colocar esse sha1 em todo lugar e não está dando
      nome='$_POST[nome]', email='$_POST[email]', login='$_POST[login]', senha='$_POST[senha]', Então no de cima no cadastro está ok, mas na edição não sei mais aonde coloco esse sha1 para dar certo ou é burrice minha mesmo,
    • By thiagocola
      Eu peguei esse JSON no site do iFood e estou com dúvida de como converter esses 8 números em Time (HH:mm).
      Já tentei timestamp mas 8 dígitos é muito pequeno e já tentei ticks.
      Estou usando C#.
       
      "openingHours": [
                        {
                          "dayOfWeek": "MONDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "TUESDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "WEDNESDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "THURSDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "FRIDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "SATURDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        },
                        {
                          "dayOfWeek": "SUNDAY",
                          "openingTime": 13500000,
                          "closingTime": 97140000
                        }
                      ]
       
      Estou achando que tenho que fazer algum tipo de multiplicação ou em última hipótese, esse valor é algum identificador interno do sistema deles.
       
      Tentei converter assim:
       
      DateTime dtDateTime = new DateTime(1970, 1, 1, 0, 0, 0, 0, DateTimeKind.Utc);
       
      var openingTime = dtDateTime.AddSeconds(13500000).ToLocalTime();
      // {06/06/1970 03:00:00}
       
      var closingTime = dtDateTime.AddSeconds(97140000).ToLocalTime();
      // {29/01/1973 05:20:00}
       
      Mas os valores que retornam não fazem sentido pra mim.
       
    • By Wallcrawler
      Olá pessoal tudo bem? Estou tentando fazer a cópia de uma imagem que está disponível na web e salvar em uma pasta no meu projeto. Essa imagem está sob protocolo SSL mas navegador consegue acessá-la normalmente. Mas o meu script php é bloqueado, e não entendo o porquê.
       
      Segue o código que estou usando:
      <?php //error_reporting(E_ALL ^ E_DEPRECATED); //ini_set('display_errors', 1); //die('Script travado!'); $start = microtime(true); set_time_limit(0); function save_image($inPath,$outPath) { //Download images from remote server $in = fopen($inPath, 'rb'); $out = fopen($outPath, 'wb'); while ($chunk = fread($in,8192)) { fwrite($out, $chunk, 8192); } fclose($in); fclose($out); } include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/classes/Rpi.class.php'); include_once ($_SERVER['DOCUMENT_ROOT'] . '/grpi/include/functions.class.php'); $func = new FuncoesAuxiliares(); $rpi = new Rpi(); if(!isset($_GET['num_processo'])) { $rows = $rpi->Consulta('select num_processo, classe, especificacao from processos order by num_processo ASC limit 1'); } else { $rows = $rpi->Consulta("select num_processo, classe, especificacao from processos where num_processo > '" . $_GET['num_processo'] . "' order by num_processo ASC limit 1"); } $registros = 0; $arrayInsert = array(); $qtd_caracteres_total = 14; foreach ($rows as $rs) { //$rs['num_processo'] $zeros = ''; $qtd_char_processo = strlen($rs['num_processo']); //Fill zeros for($i=0; $i < ($qtd_caracteres_total - $qtd_char_processo); $i++) { $zeros .= '0'; } echo('BR5' . $zeros . $rs['num_processo'] . '<br>'); $url = 'http://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo']; //Aqui tento acessar a imagem e salvar na pasta correspondente save_image($url, __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); //copy('https://www.tmdn.org/tmview/trademark/image/BR5' . $zeros . $rs['num_processo'], __DIR__ .'/logo/' . $rs['num_processo'] . '.jpg'); $processo = $rs['num_processo']; $registros++; } $registros = number_format($registros, 0, ',', '.'); // Display Script End time $time_end = microtime(true); //dividing with 60 will give the execution time in minutes other wise seconds $execution_time = ($time_end - $start)/60; //execution time of the script echo '<b>Total Execution Time:</b> '. $execution_time .' Mins <hr><br><br>Registros: ' . $registros . '<br><br>'; echo("<a href='down_logo.php?num_processo=" . $processo ."' target='_self'>Próxima página</a><br><br>"); ?> O erro retornado é o seguinte:
       
      Warning: fopen(): SSL: Connection reset by peer in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fopen(http://www.tmdn.org/tmview/trademark/image/BR500000825642590): failed to open stream: HTTP request failed! in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 10

      Warning: fread() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 12

      Warning: fclose() expects parameter 1 to be resource, boolean given in /home/storage/8/23/2c/euregistrogrpi/public_html/grpiv2/rpi/down_logo.php on line 16
       
      Só que se você tentar acessar o endereço no browser, diretamente, a imagem aparece:
       
      https://www.tmdn.org/tmview/trademark/image/BR500000825642590 
       
      Onde posso estar errando? Obrigado pela atenção de todos.
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.