Percorrer um JSON e Child em PHP
Para percorrer um JSON em PHP, você pode usar a função json_decode() para converter o JSON em um array associativo ou em um objeto, e então utilizar estruturas de controle, como foreach, para percorrer e acessar os dados.
No seu caso, o JSON representa um array de objetos. Aqui está um exemplo de como percorrer esse JSON e imprimir algumas informações:
<?Php
//Criado por: Kleber Gracia Soares- Galaxyz do Brasil
function resultIteratorCustomer1($dados)
{
// Percorrendo os objetos do array
foreach ($dados as $objeto) {
$is_excluido = $objeto['excluido'] ? 'Inativo' : 'Ativo';
$output = "- Status: $is_excluido\n";
$output .= "- Razão Social: {$objeto['razao_social']}\n";
$output .= "- Nome Fantasia: {$objeto['nome_fantasia']}\n";
$output .= "- CNPJ: {$objeto['cnpj']}\n";
// Percorrendo os contatos
foreach ($objeto['contatos'] as $contato) {
$output .= "-- Contato: {$contato['nome']} ({$contato['cargo']})\n";
// Percorrendo os telefones do contato
foreach ($contato['telefones'] as $telefone) {
$output .= "--- Telefone: {$telefone['numero']}\n";
}
// Percorrendo os emails do contato
foreach ($contato['emails'] as $email) {
$output .= "---- Email: {$email['email']}\n";
}
}
// Percorrendo os telefones do objeto
foreach ($objeto['telefones'] as $telefone) {
$output .= "- Telefone: {$telefone['numero']}\n";
}
// Percorrendo os endereços adicionais do objeto
foreach ($objeto['enderecos_adicionais'] as $endereco) {
$output .= "- Endereço: {$endereco['endereco']}, {$endereco['numero']}\n";
}
// Percorrendo os emails do objeto
foreach ($objeto['emails'] as $email) {
$output .= "- Email: {$email['email']}\n";
}
$output .= "\n<hr>\n";
echo $output;
}
}
function resultIteratorCustomer2($dados)
{
// Percorrendo os objetos do array
foreach ($dados as $objeto) {
$is_excluido = $objeto['excluido'] ? 'Inativo' : 'Ativo';
$output = "- Status: $is_excluido" . PHP_EOL;
$output .= "- Razão Social: {$objeto['razao_social']}" . PHP_EOL;
$output .= "- Nome Fantasia: {$objeto['nome_fantasia']}" . PHP_EOL;
$output .= "- CNPJ: {$objeto['cnpj']}" . PHP_EOL;
// Percorrendo os contatos
foreach ($objeto['contatos'] as $contato) {
$output .= "-- Contato: {$contato['nome']} ({$contato['cargo']})" . PHP_EOL;
// Percorrendo os telefones do contato
foreach ($contato['telefones'] as $telefone) {
$output .= "--- Telefone: {$telefone['numero']}" . PHP_EOL;
}
// Percorrendo os emails do contato
foreach ($contato['emails'] as $email) {
$output .= "---- Email: {$email['email']}" . PHP_EOL;
}
}
// Percorrendo os telefones do objeto
foreach ($objeto['telefones'] as $telefone) {
$output .= "- Telefone: {$telefone['numero']}" . PHP_EOL;
}
// Percorrendo os endereços adicionais do objeto
foreach ($objeto['enderecos_adicionais'] as $endereco) {
$output .= "- Endereço: {$endereco['endereco']}, {$endereco['numero']}" . PHP_EOL;
}
// Percorrendo os emails do objeto
foreach ($objeto['emails'] as $email) {
$output .= "- Email: {$email['email']}" . PHP_EOL;
}
$output .= PHP_EOL . '<hr>' . PHP_EOL;
echo $output;
}
}
function resultIteratorCustomer3($dados)
{
// Percorrendo os objetos do array
foreach ($dados as $objeto) {
$is_excluido = $objeto['excluido'] ? 'Inativo' : 'Ativo';
$output = "- Status: $is_excluido" . PHP_EOL;
$output .= "- Razão Social: {$objeto['razao_social']}" . PHP_EOL;
$output .= "- Nome Fantasia: {$objeto['nome_fantasia']}" . PHP_EOL;
$output .= "- CNPJ: {$objeto['cnpj']}" . PHP_EOL;
// Percorrendo os contatos
foreach ($objeto['contatos'] as $contato) {
$output .= "-- Contato: {$contato['nome']} ({$contato['cargo']})" . PHP_EOL;
// Percorrendo os telefones do contato
foreach ($contato['telefones'] as $telefone) {
$output .= "--- Telefone: {$telefone['numero']}" . PHP_EOL;
}
// Percorrendo os emails do contato
foreach ($contato['emails'] as $email) {
$output .= "---- Email: {$email['email']}" . PHP_EOL;
}
}
// Percorrendo os telefones do objeto
foreach ($objeto['telefones'] as $telefone) {
$output .= "- Telefone: {$telefone['numero']}" . PHP_EOL;
}
// Percorrendo os endereços adicionais do objeto
foreach ($objeto['enderecos_adicionais'] as $endereco) {
$output .= "- Endereço: {$endereco['endereco']}, {$endereco['numero']}" . PHP_EOL;
}
// Percorrendo os emails do objeto
foreach ($objeto['emails'] as $email) {
$output .= "- Email: {$email['email']}" . PHP_EOL;
}
$output .= PHP_EOL . '<hr>' . PHP_EOL;
echo nl2br($output);
}
}
$json = '
[
{
"ultima_alteracao":"2023-04-13 11:24:38",
"razao_social":"Loja do Zé LTDA",
"nome_fantasia":"Zé Store",
"tipo":"J",
"cnpj":"46487899000110",
"inscricao_estadual":"ISENTO",
"suframa":"",
"rua":"Rua Abdon Batista",
"numero":"121",
"complemento":"sala 1402",
"cep":"89201010",
"bairro":"Centro",
"cidade":"Joinville",
"estado":"SC",
"observacao":"Cliente com ótimo histórico de pagamentos.",
"excluido":true,
"bloqueado_b2b":false,
"contatos":[
{
"id":3018817,
"nome":"Lucas da Silva",
"cargo":"Gerente de Compras",
"excluido":false,
"telefones":[
{
"id":24004176,
"numero":"(21) 1111-1234",
"tipo":"T"
}
],
"emails":[
{
"id":13608089,
"email":"lucas@zestore.com.br",
"tipo":"T"
}
]
}
],
"criador_id":59398,
"nome_excecao_fiscal":"Isento",
"id":7217335,
"telefones":[
{
"tipo":"T",
"numero":"(11) 98765-4321",
"id":24393031
},
{
"tipo":"T",
"numero":"(47) 9876-5432",
"id":24393032
}
],
"enderecos_adicionais":[
{
"ultima_alteracao":"2023-04-13 11:24:15",
"cep":"89223005",
"endereco":"Av. Rolf Wiest",
"numero":"277",
"complemento":"",
"bairro":"Bom Retiro",
"cidade":"Joinville",
"estado":"SC",
"id":4743849
},
{
"ultima_alteracao":"2023-04-13 11:24:15",
"cep":"89223005",
"endereco":"Av. Rolf Wiest",
"numero":"333",
"complemento":"Sala 1",
"bairro":"Bom Retiro",
"cidade":"Joinville",
"estado":"SC",
"id":4743850
}
],
"emails":[
{
"tipo":"T",
"email":"jose@zestore.com.br",
"id":13961383
},
{
"tipo":"T",
"email":"marcos@zestore.com.br",
"id":13961384
}
]
},
{
"ultima_alteracao":"2023-04-25 10:41:10",
"razao_social":"Loja do Galaxyz LTDA",
"nome_fantasia":"Juliana Dainez",
"tipo":"F",
"cnpj":"04126634901",
"inscricao_estadual":"ISENTO",
"suframa":"",
"rua":"Rua Abdon Batista",
"numero":"121",
"complemento":"sala 1402",
"cep":"89201010",
"bairro":"Centro",
"cidade":"Joinville",
"estado":"SC",
"observacao":"Cliente com ótimo histórico de pagamentos.",
"excluido": false,
"bloqueado_b2b":false,
"contatos":[
{
"id":3024984,
"nome":"Lucas da Silva",
"cargo":"Gerente de Compras",
"excluido":false,
"telefones":[
{
"id":24004399,
"numero":"(21) 1111-1234",
"tipo":"T"
}
],
"emails":[
{
"id":13608231,
"email":"lucas@zestore.com.br",
"tipo":"T"
}
]
}
],
"criador_id":59398,
"nome_excecao_fiscal":"Isento",
"id":7227258,
"telefones":[
{
"tipo":"T",
"numero":"(11) 98765-4321",
"id":24407039
},
{
"tipo":"T",
"numero":"(47) 9876-5432",
"id":24407040
}
],
"enderecos_adicionais":[
{
"ultima_alteracao":"2023-04-25 10:40:46",
"cep":"89223005",
"endereco":"Av. Rolf Wiest",
"numero":"277",
"complemento":"",
"bairro":"Bom Retiro",
"cidade":"Joinville",
"estado":"SC",
"id":4744002
},
{
"ultima_alteracao":"2023-04-25 10:40:46",
"cep":"89223005",
"endereco":"Av. Rolf Wiest",
"numero":"333",
"complemento":"Sala 1",
"bairro":"Bom Retiro",
"cidade":"Joinville",
"estado":"SC",
"id":4744003
}
],
"emails":[
{
"tipo":"T",
"email":"jose@zestore.com.br",
"id":13973709
},
{
"tipo":"T",
"email":"marcos@zestore.com.br",
"id":13973710
}
]
}
]
';
$dados = json_decode($json, true); // Converte o JSON em um array associativo
// Percorrendo os objetos do array
$resultCustomer = resultIteratorCustomer3($dados);
?>
Neste exemplo, utilizamos loops foreach para percorrer os diferentes níveis de informações no JSON. Você pode adaptar o código conforme suas necessidades para acessar os dados específicos que deseja extrair.
Espero ter ajudado.
