Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

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>";

	}
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros 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.

Compartilhar este post


Link para o post
Compartilhar em outros 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>";

	}
}

?>

Compartilhar este post


Link para o post
Compartilhar em outros sites

  • Conteúdo Similar

    • Por ILR master
      Boa tarde, pessoal.
      Espero que todos estejam bem.
       
      Seguinte:
      Tenho a seguinte consulta:
       
      $usuarios= "SELECT * FROM usuarios";
      $query= mysqli_query($conexao, $usuarios) or die ("Usuário não encontrado");
      $usuario = mysqli_fetch_array($query);
       
      Quero pegar apenas o campo 'nome' da tabela 'usuarios' e colocar todos os resultados da seguinte forma:
       
      $nomes = array("Rafael", "João", "Maria", "Pedro", "Patricia", "Camila");
       
      Agradeço desde já.
      Abs
       
       
    • Por clovis.sardinha
      Estou em um impasse pois sei pouco de javascript. Estou fazendo um autocomplete com CI4 e Javascript.
      Consigo gerar, através do controllers/model do CI4 um arquivo em json, mas não consigo retorná-lo para o javascript para poder mostrar as opções para consulta. 
      O console.log mostra que estou obtendo o  json() { [native code] }.
      Segue os dois arquivos para ver se alguém me ajuda.
      //arquivo cidade.js async function carregar_cidade(valor) { if (valor.length >= 3) { //console.log("Pesquisar:" + valor); const dados = fetch('Testes/?cidade='+valor, { method: "get", headers: { "Content-Type": "application/json", "X-Requested-With": "XMLHttpRequest" } }); const resposta = (await dados).json; console.log(resposta); var html = "<ul class='list-group position-fixed'>"; html += "<li class='list-group-item'>" + resposta['cid_nome'] + "</li>"; html += "</ul>"; } } <?php //arquivo Testes.php namespace App\Controllers; use App\Models\CidadeModel; /** NÃO MANDAR PARA O SERVIDOR - APENAS TESTES DE FUNÇÕES E OUTROS ELEMENTOS DO CI4 */ class Testes extends BaseController{ protected $tbCidades; public function __construct(){ $this->tbCidades = new CidadeModel(); } public function index(){ $request = \Config\Services::request(); $client = \Config\Services::curlrequest(); $cidades=[]; if($get=$request->getGet()){ $cities=$get['cidade']; $cidadeFiltrada=$this->tbCidades->getCidByName($cities); $cidades= json_encode($cidadeFiltrada); //dd($cidades); } echo view('Testes/testes'); } public function salvar(){ $request = \Config\Services::request(); if($post=$request->getPost()){ dd($post); } } } <!doctype html> <html lang="pt-br"> <head> <meta charset="utf-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <!-- Bootstrap CSS --> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-1BmE4kWBq78iYhFldvKuhfTAU6auU8tT94WrHftjDbrCEXSU1oBoqyl2QvZ6jIW3" crossorigin="anonymous"> <title>Autocomplete</title> </head> <body> <div class="container"> <h1 class="mt-4 mb-4">Formulário</h1> <form class="row g-3"> <div class="col-12"> <label for="cidade" class="form-label">Cidade</label> <input type="text" name="cidade" class="form-control" id="cidade" placeholder="Pesquisar cidade" onkeyup="carregar_cidade(this.value)"> </div> <span ></span> </form> </div> <!-- Optional JavaScript; choose one of the two! --> <!-- Option 1: Bootstrap Bundle with Popper --> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.1.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-ka7Sk0Gln4gmtz2MlQnikT1wXgYsOg+OMhuP+IlRH9sENBO0LRn5q+8nbTov4+1p" crossorigin="anonymous"></script> <script src="assets/js/cidade.js"></script> </body> </html>
    • Por FabianoSouza
      Olá pessoal.
      Eu já utilizo o FOR JSON PATH para retornar o o resultado de uma consulta com JSON. Isso eu já sei fazer.
       
      O que preciso é criar uma função que receba um SELECT como parâmetro e retorne o resultado desse SELECT já formatado como JSON.
      Estou tentando isso, mas sem sucesso.
       
      A function dbo.fn_retornaJsonPath :
      (@String NVARCHAR(MAX)) RETURNS NVARCHAR(MAX) AS BEGIN BEGIN IF @String <> NULL SET @String = (SELECT @String AS jsonPath FOR JSON PATH) END BEGIN IF @String IS NULL SET @String = '[]' END RETURN @String END Forma de executar:
      SET @sql = 'SELECT ' SET @sql = @sql + ' dbo.fn_retornaJsonPath ((SELECT TT.tema FROM dbo.tabela AS TT WHERE TT.cd = CTT.id)) AS ''temas'' ' SET @sql = @sql + ' FROM dbo.minhaTab AS CTT ' EXEC(@sql) Mas não está rolando....
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
    • Por mateus.andriollo
      Existe uma forma de fazer um IF na select e comparar com Array de dados?
       
      algo como
       
      Select if( in_array(idCliente,'1,2,3,4,5')=true,'Tem','Não') ) as cliente Não consigo usar inner ou where pois esse resultado do array é algo q tem varias regras...
       
      Precisava saber se existe uma função assim em MySQL
×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.