Jump to content
mjstudios

JSON e ARRAY

Recommended Posts

Pessoal, preciso retornar aos valores de array: listaOperacoes - ListaDeVencidos:

<?php

$json_str = '{"return":{"Setor":"99783652","Cliente":"123456789","Assumida":"0.00","Recebida":"0.00","dataBase":"2016-05","dataInicio:"2016-07-04","listaOperacoes":[{"listaDeVencidos":{"codigo":"v250","VencimentoValor":"2053.93"},"modalidade":"1301","variacaoCambial":"N"},{"listaDeVencidos":[{"codigo":"v260","VencimentoValor":"1194.04"},{"codigo":"v245","VencimentoValor":"726.22"},{"codigo":"v220","VencimentoValor":"72.05"},{"codigo":"v255","VencimentoValor":"1506.69"},{"codigo":"v230","VencimentoValor":"83.98"},{"codigo":"v240","VencimentoValor":"407.28"},{"codigo":"v310","VencimentoValor":"1333.58"},{"codigo":"v250","VencimentoValor":"719.10"}],"modalidade":"0203","variacaoCambial":"N"},{"listaDeVencidos":[{"codigo":"v140","VencimentoValor":"333.95"},{"codigo":"v210","VencimentoValor":"111.84"},{"codigo":"v150","VencimentoValor":"634.91"},{"codigo":"v220","VencimentoValor":"115.72"},{"codigo":"v230","VencimentoValor":"117.27"},{"codigo":"v110","VencimentoValor":"109.51"},{"codigo":"v120","VencimentoValor":"109.96"},{"codigo":"v130","VencimentoValor":"110.41"}],"modalidade":"0212","variacaoCambial":"N"}],"Documentos":"92.73","VolumeProcessado":"99.84","Instituicoes":3,"quantidadeTotal":7,"OperacoesDiscordancia":0,"quantidadeOperacoes":0,"responsabilidadeTotal":"0","responsabilidade":"0","Vendor":"0.00","tipo":"1"}}';

$jsonObj = json_decode($json_str);

echo '<pre>';
var_dump($jsonObj);
echo '</pre>';


foreach( $jsonObj as $item ){

	foreach ( $item as $property => $value ){

			echo $property." = ".$item->$property."<br>";

	}
}

?>

Share this post


Link to post
Share on other sites

Boa Tarde mjstudios

 

o json que você esta colocando na variável esta "quebrado", então quando você executa o json_decode() ele retorna null e não um array.

 

Outro ponto é que em seu foreach você não esta considerando a chave "return", isso pode ser um problema dependendo dos itens que você deseja pegar.

 

Caso você queira validar se seu JSON é valido utilize http://jsonlint.com, ele vai te apontar onde esta o erro na estrutura dele.

Share this post


Link to post
Share on other sites

Obrigado Anderson, segue JSON valido.

<?php

$json_str = '{"return":{"Setor":"99783652","Cliente":"123456789","coobrigacaoAssumida":"0.00","coobrigacaoRecebida":"0.00","dataBase":"2016-05","dataInicioRelacionamento":"2016-07-04","listaOperacoes":[{"listaDeVencidos":{"codigo":"v250","VencimentoValor":"2053.93"},"modalidade":"1301","variacaoCambial":"N"},{"listaDeVencidos":[{"codigo":"v260","VencimentoValor":"1194.04"},{"codigo":"v245","VencimentoValor":"726.22"},{"codigo":"v220","VencimentoValor":"72.05"},{"codigo":"v255","VencimentoValor":"1506.69"},{"codigo":"v230","VencimentoValor":"83.98"},{"codigo":"v240","VencimentoValor":"407.28"},{"codigo":"v310","VencimentoValor":"1333.58"},{"codigo":"v250","VencimentoValor":"719.10"}],"modalidade":"0203","variacaoCambial":"N"},{"listaDeVencidos":[{"codigo":"v140","VencimentoValor":"333.95"},{"codigo":"v210","VencimentoValor":"111.84"},{"codigo":"v150","VencimentoValor":"634.91"},{"codigo":"v220","VencimentoValor":"115.72"},{"codigo":"v230","VencimentoValor":"117.27"},{"codigo":"v110","VencimentoValor":"109.51"},{"codigo":"v120","VencimentoValor":"109.96"},{"codigo":"v130","VencimentoValor":"110.41"}],"modalidade":"0212","variacaoCambial":"N"}],"percentualDocumentosProcessados":"92.73","percentualVolumeProcessado":"99.84","quantidadeDeInstituicoes":3,"quantidadeDeOperacoes":7,"quantidadeOperacoesDiscordancia":0,"quantidadeOperacoesSubJudice":0,"responsabilidadeTotalDiscordancia":"0","responsabilidadeTotalSubJudice":"0","riscoIndiretoVendor":"0.00","tipoDoCliente":"1"}}';

$jsonObj = json_decode($json_str);

echo '<pre>';
var_dump($jsonObj);
echo '</pre>';


foreach( $jsonObj as $item ){

	foreach ( $item as $property => $value ){

			echo $property." = ".$item->$property."<br>";

	}
}

?>

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 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 eiwes
      Fiz uma iteração foreach para gerar categorias e subcategorias, pois não queria fazer DOIS SELECTS, ficando assim:
       
      //----> Foreach para gerar a categoria, pois são vários items com as mesmas chaves, portanto agrupo foreach($exibeLista as $row){ $dlD[$row["nameD"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } //----> Foreach para gerar subcategorias foreach($exibeLista as $row){ $dLA[$row["nameP"]][] = [ "nameD"=>$row["nameD"], "idD"=>$row["idD"], "idAss"=>$row["idAss"], "idT"=>$row["idT"], "nameP"=>$row["nameP"], "qtdR"=>$row["qtdR"], "qtdF"=>$row["qtdF"] ]; } $fsHTML = []; $rateD = 0; $qtdAss = 0; if(is_array($dlD) || is_object($dlD)){ foreach ($dlD as $key => $ds) { if ($key <> '' && $key <> NULL) { $rateD += (($ds[0]["qtdR"]*100)/$ds[0]["qtdF"]); $qtdAss += count($dlD[$key]); //----> Array para inserir HTML da Categoria criada e criar accordion $fsHTML[] = ' <div class="col-md-12 col-sm-12 col-xs-12"> <div class="x_panel overflow_hidden padding-into-row-qsts bg-white-row filtro-on"> <span class="rateD">'.ceil($rateD/$qtdAss).'%</span> <span class="opcao-into-top">'.$ds[0]["idD"].' - '.$ds[0]["nameD"].' <a class="collapse-link open-filter-qsts border-radius8"><i class="fa fa-chevron-up"></i></a></span> <div class="x_content" style="display:none;padding-top:10px"> <div class="accordion" id="accordion" role="tablist" aria-multiselectable="true"> '; //----> Verificar se a subcategoria contém a categoria, se contém é incluída na array foreach ($dLA as $keys => $ass) { if($ass[0]["idD"] == $ds[0]["idD"] ){ if($ass[0]['idT'] <> 0){ $link = 't='.$ass[0]['idT']; }else{ $link = 'a='.$ass[0]['idAss'];} $fsHTML[] = ' <div class="panel"> <a class="panel-heading collapsed" href="/v/fs/st?mz=y&type=c&'.$link.'"> <span class="eficiencia-accordion">'.ceil(($ass[0]['qtdR']*100)/$ass[0]['qtdF']).'%</span> <h4 class="panel-title">'.$ass[0]['nameP'].'</h4> <span class="unicamente">'.$ass[0]['qtdR'].' respondido de '.$ass[0]['qtdF'].'</span> </a> </div> '; }//if ass }//foreach ass }//if ds //----> Aqui é aonde ocorre o ERRO! Era pra fazer o fechamento do Accordion e gerar uma nova DIV. //No índice [0] isso ocorre normalmente, porém no [1] ela agrupa todos os accordions. (abaixo farei a amostra) $fsHTML[] = '</div></div></div></div>'; }//foreach ds }//if verifica se é array e se é objeto return implode('', array_unique($fsHTML)); O correto seria assim:
       
      - Categoria
        - Subcategoria
        - Subcategoria
       
      - Categoria
       - Subcategoria
       - Subcategoria
       
       
      Como está acontecendo:
       
      - Categoria
        - Subcategoria
        - Subcategoria
       
      - Categoria
        - Subcategoria
        - Subcategoria
          - Categoria
            - Subcategoria
            - Subcategoria
              - Categoria
                - Subcategoria
                - Subcategoria
                  - Categoria
                    - Subcategoria
                    - Subcategoria
       
       
      Não consigo entender de jeito nenhum pq o primeiro fecha corretamente e a partir do segundo não.
      Alguém me ajuda?
       
       
    • By Marcos PP
      Tenho que retornar os dados desta URL e transformar em variaves em PHP

      Ja tentei alguns exemplos mas so me retorna Null

      http://betontec.fortiddns.com:8082/api/login?usuario=joeliton&senha=123

       
      $data = file_get_contents('http://betontec.fortiddns.com:8082/api/login?usuario=joeliton&senha=123'); $data = json_decode($data,true); var_dump($data);  
    • By robertdccaetano
      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 



    • By jganjos
      Boa tarde senhores.
      Estou gerando esta array com o PHP
       
      Array ( [header] => Array ( [ico] => fas fa-building [tit] => Empresa [lab] => Cadastro da Empresa ) [forms] => Array ( [RAZAO] => Array ( [tit] => Razão Social ) [NFANTASIA] => Array ( [tit] => Nome Fantasia [lin] => 1 [col] => 10 ) [STATUS] => Array ( [tit] => Status [typ] => switch [val] => 1,0 [lin] => 1 [col] => 2 ) [INSCRICAO] => Array ( [tit] => Inscrição [lin] => 2 [col] => 4 ) [IE] => Array ( [tit] => Insc. Estadual [lin] => 2 [col] => 4 ) [IM] => Array ( [tit] => Insc. Municipal [lin] => 2 [col] => 4 ) [CEP] => Array ( [tit] => CEP [lin] => 3 [col] => 4 [btn] => search ) [TIPO_END] => Array ( [typ] => hidden ) [ENDERECO] => Array ( [tit] => Endereço [lin] => 4 [col] => 9 ) [NUM_END] => Array ( [tit] => Número [lin] => 4 [col] => 3 ) [BAIRRO] => Array ( [tit] => Bairro [lin] => 5 [col] => 6 ) [COMPL] => Array ( [tit] => Complemento [lin] => 5 [col] => 6 ) [MUNICIPIO] => Array ( [tit] => Município [lin] => 6 [col] => 9 ) [UF] => Array ( [tit] => Estado [typ] => list [tab] => estados [lin] => 6 [col] => 3 ) [TEL1] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [TEL2] => Array ( [tit] => Telefone [msk] => phone [lin] => 7 [col] => 6 ) [EMAIL] => Array ( [tit] => e-mail [typ] => email [lin] => 8 [col] => 6 ) [SITE] => Array ( [tit] => Site da empresa [typ] => website [lin] => 8 [col] => 6 ) ) ) Preciso listar os valores da Array *FORMS* e seus respectivos filhos mas não estou conseguindo utilizando o foreach.
      Alguém teria uma dica?
×

Important Information

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