Ir para conteúdo

POWERED BY:

Arquivado

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

michelmfreitas

[Resolvido] Erro ao acessar dados JSON

Recommended Posts

Olá pessoal, mais uma dúvida:

 

Tenho um retorno JSON no meu PHP, na variável $rs['dados'] .

 

Estrutura do meu JSON:

{"grupo":"1","familia":"Melastomataceae","familia_autor":"DC.","genero":"Behuria","genero_autor":"Grand","especie":"Behuria nervosa","especie_autor":"Chico","habito":["Árvore","Arbusto"],"estipulas":["ausentes"],"latex":["ausentes"],"disposicao_folhas":["oposta"],"divisao_limbo":["simples"],"soldadura_calice":["gamossepala"],"numero_sepalas":"5","soldadura_corola":["dialissepala"],"numero_petalas":"4","consistencia_fruto":["seca"],"nome_popular":"bucha","referencias_bibliograficas":null,"referencias_bibliograficas_simplificadas":"Lemes, 2000","distribuicao_geografica":"MG, RJ","formacoes_vegetais":"Floresta Estacional Semidecidual","periodo_de_floracao":null,"links":"www.site.com","descricao":null,"observacoes":"folhas exalam odor de pimenta quandpo maceradas"}

 

Então:

 

//transforma em objeto
$dados = json_decode($rs['dados']);

//transforma em array
$dados = json_decode($rs['dados'], true);

 

Porém, quando dou um ECHO ou PRINT_R ou tento debugar o que tá dentro do $dados, não imprime nada. E no $rs['dados'] tem o dado json sim.

 

Soluções? =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use var_dump para debugar amigo.

 

Se o retorno for uma string vazia pode ser um sinal que em algum

momento de seu código você está atribuindo outro valor a $dados.

 

Vá debugando a variável até ver em que ponto do código ela deixa de ter os dados json.

Assim fica fácil descobrir.

 

Abraços.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Use var_dump para debugar amigo.

 

Se o retorno for uma string vazia pode ser um sinal que em algum

momento de seu código você está atribuindo outro valor a $dados.

 

Vá debugando a variável até ver em que ponto do código ela deixa de ter os dados json.

Assim fica fácil descobrir.

 

Abraços.

 

Já debuguei... utilizei VAR_DUMP, ele retorna NULL. O erro pode estar no JSON, pois testei com itens simples, retirando os COLCHETES e funcionou. Mas não consigo identificar erros nas COLCHETES.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uhn... Dá uma olhada aqui.

 

Cuidado

Esta função irá retorna false se o dado codificado JSON possui mais que 127 elementos.

 

Versão ----- Descrição

5.2.3 ----- O limite de aninhamento foi aumentado de 20 para 128

 

Então, se a versão do PHP utilizada for menor do que 5.2.3, pode ser a causa do problema, porque aqui eu testei e tive o seguinte retorno:

<?php

$dados = '{"grupo":"1","familia":"Melastomataceae","familia_autor":"DC.","genero":"Behuria","genero_autor":"Grand","especie":"Behuria nervosa","especie_autor":"Chico","habito":["Árvore","Arbusto"],"estipulas":["ausentes"],"latex":["ausentes"],"disposicao_folhas":["oposta"],"divisao_limbo":["simples"],"soldadura_calice":["gamossepala"],"numero_sepalas":"5","soldadura_corola":["dialissepala"],"numero_petalas":"4","consistencia_fruto":["seca"],"nome_popular":"bucha","referencias_bibliograficas":null,"referencias_bibliograficas_simplificadas":"Lemes, 2000","distribuicao_geografica":"MG, RJ","formacoes_vegetais":"Floresta Estacional Semidecidual","periodo_de_floracao":null,"links":"www.site.com","descricao":null,"observacoes":"folhas exalam odor de pimenta quandpo maceradas"}';

echo '<pre>';
var_dump ( json_decode ( $dados ) );
// saída
object(stdClass)#1 (26) {
 ["grupo"]=>
 string(1) "1"
 ["familia"]=>
 string(15) "Melastomataceae"
 ["familia_autor"]=>
 string(3) "DC."
 ["genero"]=>
 string(7) "Behuria"
 ["genero_autor"]=>
 string(5) "Grand"
 ["especie"]=>
 string(15) "Behuria nervosa"
 ["especie_autor"]=>
 string(5) "Chico"
 ["habito"]=>
 array(2) {
   [0]=>
   string(7) "Ãrvore"
   [1]=>
   string(7) "Arbusto"
 }
 ["estipulas"]=>
 array(1) {
   [0]=>
   string(8) "ausentes"
 }
 ["latex"]=>
 array(1) {
   [0]=>
   string(8) "ausentes"
 }
 ["disposicao_folhas"]=>
 array(1) {
   [0]=>
   string(6) "oposta"
 }
 ["divisao_limbo"]=>
 array(1) {
   [0]=>
   string(7) "simples"
 }
 ["soldadura_calice"]=>
 array(1) {
   [0]=>
   string(11) "gamossepala"
 }
 ["numero_sepalas"]=>
 string(1) "5"
 ["soldadura_corola"]=>
 array(1) {
   [0]=>
   string(12) "dialissepala"
 }
 ["numero_petalas"]=>
 string(1) "4"
 ["consistencia_fruto"]=>
 array(1) {
   [0]=>
   string(4) "seca"
 }
 ["nome_popular"]=>
 string(5) "bucha"
 ["referencias_bibliograficas"]=>
 NULL
 ["referencias_bibliograficas_simplificadas"]=>
 string(11) "Lemes, 2000"
 ["distribuicao_geografica"]=>
 string(6) "MG, RJ"
 ["formacoes_vegetais"]=>
 string(32) "Floresta Estacional Semidecidual"
 ["periodo_de_floracao"]=>
 NULL
 ["links"]=>
 string(12) "www.site.com"
 ["descricao"]=>
 NULL
 ["observacoes"]=>
 string(47) "folhas exalam odor de pimenta quandpo maceradas"
}

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então, vamos ver o que acontece. Habilite todas as mensagens de erro e execute o código abaixo. Poste aqui a saída no navegador.

 

echo '<pre>Dados => ';
var_dump($rs['dados']);
echo '</pre><hr><pre>Json =>';
//transforma em objeto
$dados = json_decode($rs['dados']);
var_dump($dados);

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Saída:

 

Dados => string(768) "{"grupo":"1","familia":"Melastomataceae","familia_autor":"DC.","genero":"Behuria","genero_autor":"Grand","especie":"Behurianervosa","especie_autor":"Chico","habito":["Árvore","Arbusto"],"estipulas":["ausentes"],"latex":["ausentes"],"disposicao_folhas":["oposta"],"divisao_limbo":["simples"],"soldadura_calice":["gamossepala"],"numero_sepalas":"5","soldadura_corola":["dialissepala"],"numero_petalas":"4","consistencia_fruto":["seca"],"nome_popular":"bucha","referencias_bibliograficas":"a","referencias_bibliograficas_simplificadas":"Lemes, 2000","distribuicao_geografica":"MG, RJ","formacoes_vegetais":"Floresta Estacional Semidecidual","periodo_de_floracao":"a","links":"www.globo.com","descricao":"a","observacoes":"folhas exalam odor de pimenta quandpo maceradas"}"

Json =>NULL

Notice: Undefined index: especie in C:\Users\michel\Desktop\mowes_portable\www\phytoweb\includes\herbario.php on line 254

Compartilhar este post


Link para o post
Compartilhar em outros sites

Certo. Então, só posso imaginar que o problema esteja com a codificação dos dados que estão em $rs['dados']. Tenta assim pra ver se funciona.

 

echo '<pre>Dados => ';
var_dump($rs['dados']);
echo '</pre><hr><pre>Json =>';
//transforma em objeto
$dados = json_decode(utf8_encode($rs['dados']));
var_dump($dados);

 

Carlos Eduardo

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

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