Ir para conteúdo

POWERED BY:

Arquivado

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

michelmfreitas

[Resolvido] Tratamento de retorno Json no PHP

Recommended Posts

Pessoal, tenho o retorno de um código assim:

 

Array
(
    [resultado] => [{"descricao1":"sfrewrewr","descricao2":"rewr","descricao3":"ewrew","descricao4":"rerwe"},{"descricao1":"sdsad","descricao3":"sadasd","descricao2":"dsadsa","descricao4":"dsadas"}]
)

Como faço pra tratar isso no PHP? Pois não vou tratar como string.... deve ter outro jeito...

obs.: pode ser que venham mais campos 'descricao5', 'desricao6', até 'descricaoN'

 

=)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Já havia tentado com ele. Deu o erro:

 

Warning: json_decode() expects parameter 1 to be string, array given in D:\mowes\www\phytoweb\includes\teste.php on line 3

o codigo que utilizei foi este:

 

$json = json_decode($_POST);
echo $json;

Compartilhar este post


Link para o post
Compartilhar em outros sites

A mensagem de erro é bem clara, você deveria ter passado uma string. A super-global $_POST é uma matriz associativa com vários campos.

 

Veja qual campo contém o valor que você precisa e utilize-o como argumento da função

Compartilhar este post


Link para o post
Compartilhar em outros sites

Me desculpe, rss... falta de atenção.

 

Fatal error: Cannot use object of type stdClass as array in D:\mowes\www\phytoweb\includes\teste.php on line 10

para o código

 

$json = json_decode($_POST['resultado']);

for($i=0; $i<=count($json); $i++){
    echo $json[$i]['descricao1'];
}

Exibindo:

<pre>Array
(
    [0] => stdClass Object
        (
            [descricao1] => sfrewrewr
            [descricao2] => rewr
            [descricao3] => ewrew
            [descricao4] => rerwe
        )

    [1] => stdClass Object
        (
            [descricao1] => sdsad
            [descricao3] => sadasd
            [descricao2] => dsadsa
            [descricao4] => dsadas
        )

)
</pre>

O que é esse stdClass Object?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Um objeto primitivo do PHP que não contém métodos, só propriedades.

 

JSON = JavaScript Object Notation

 

Todos os objetos codificados como JSON são convertidos em instâncias de stdClass no PHP.

 

Para acessar essas propriedades basta fazer:

 

<?php
echo $json[ 0 ]->descricao1;

Compartilhar este post


Link para o post
Compartilhar em outros sites

Consegui da seguinte maneira:

 

foreach($json as $item){
    echo $item->descricao1;
}

Porém, o 'descricao1' é dinâmico, ou seja, pode ter até 'descricaoN' sem limites.

 

Agora a dúvida é como pegar esse limite, ou seja, saber quantos itens tem para fazer o loop corretamente?

 

Tentei count($item) dentro do foreach e nao funcionou.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Porém, o 'descricao1' é dinâmico, ou seja, pode ter até 'descricaoN' sem limites.

Itere o objeto:

 

foreach( $json as $item ){
foreach ( $item as $property => $value ){
	if ( substr( $property , 0 , 9 ) == 'descricao' ){
		echo 'A propriedade ' , $property , ' contém ' , $item->$property;
	}
}
}

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.