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.

Please follow and like us:
Pin Share

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

RSS
Follow by Email
WP Radio
WP Radio
OFFLINE LIVE