Php separate json ond fields are default

Asked

Viewed 56 times

0

I’m trying to separate a json string that returns from the database but has been unsuccessful so far. The problem is in the question tag, where the result is dynamic and will always be different. I need to separate the question from the question and its answer according to the research. I thank you from now on any help!

foreach ($dadosPS as $dados) {
       $array['nome_pesquisa'] = $dados['nome_pesquisa'];
       $array['questionario'] = $dados['questionario'];
      @$ret .= json_encode($array);
   }
  echo @$ret;




{"nome_pesquisa":"FORMA DE PAGAMENTO","questionario":"{"Bom dia/Boa tarde! Sou do setor de pesquisas , gostaria de falar com o responsável pela Razão Social XXXX ?":"Sim","Hoje o Sr(a) utiliza dinheiro como forma de pagamento de suas compras , caso disponibilizassemos o pagamento via cartão de débito, o Sr(a) gostaria ?":"Não","Também disponibilizamos o modo de pagamento via Boleto, você gostaria de optar por esta forma de pagamento ?":"Sim"}"},
{"nome_pesquisa":"nota fiscal parceria","questionario":"{"Nome":"teste","Você é responsu00e1vel pelo recebimento da entrega de parceria ?":"sim","Você recebeu a nota fiscal ?":"não","Porque não recebeu ?":"preço não acordado"}"}

1 answer

1


Have you ever tried a foreach in array $dados['questionario']?

Incidentally, his JSON is wrong: [...]nario":"{"Bom dia[...] should be [...]nario":{"Bom dia[...].

But in case you return more than one object in the search, your JSON should look like this:

{
    "pesquisa1": {
        "nome_pesquisa": "FORMA DE PAGAMENTO",
        "questionario": {
            "Bom dia/Boa tarde! Sou do setor de pesquisas , gostaria de falar com o responsável pela Razão Social XXXX ?": "Sim",
            "Hoje o Sr(a) utiliza dinheiro como forma de pagamento de suas compras , caso disponibilizassemos o pagamento via cartão de débito, o Sr(a) gostaria ?": "Não",
            "Também disponibilizamos o modo de pagamento via Boleto, você gostaria de optar por esta forma de pagamento ?": "Sim"
        }
    },
    "pesquisa2": {
        "nome_pesquisa": "nota fiscal parceria",
        "questionario": {
            "Nome": "teste",
            "Você é responsu00e1vel pelo recebimento da entrega de parceria ?": "sim",
            "Você recebeu a nota fiscal ?": "não",
            "Porque não recebeu ?": "preço não acordado"
        }
    }
}

Now we will have the data formatted in PHP with a json_decode:

Array
(
    [pesquisa1] => Array
        (
            [nome_pesquisa] => FORMA DE PAGAMENTO
            [questionario] => Array
                (
                    [Bom dia/Boa tarde! Sou do setor de pesquisas , gostaria de falar com o responsável pela Razão Social XXXX ?] => Sim
                    [Hoje o Sr(a) utiliza dinheiro como forma de pagamento de suas compras , caso disponibilizassemos o pagamento via cartão de débito, o Sr(a) gostaria ?] => Não
                    [Também disponibilizamos o modo de pagamento via Boleto, você gostaria de optar por esta forma de pagamento ?] => Sim
                )

        )

    [pesquisa2] => Array
        (
            [nome_pesquisa] => nota fiscal parceria
            [questionario] => Array
                (
                    [Nome] => teste
                    [Você é responsu00e1vel pelo recebimento da entrega de parceria ?] => sim
                    [Você recebeu a nota fiscal ?] => não
                    [Porque não recebeu ?] => preço não acordado
                )

        )

)

To make it easier, I created a data file JSON and "pulled" the content in PHP, to then decode. The result was the following:

$json = json_decode(file_get_contents("arquivo_json.json"), true);

foreach($json['pesquisa1']['questionario'] as $pergunta => $resposta){
    echo "Pergunta: " . $pergunta . " / Resposta: " . $resposta . "<br>";
}

Exit became like this:

//Pergunta: Bom dia/Boa tarde! Sou do setor de pesquisas , gostaria de falar com o responsável pela Razão Social XXXX ? / Resposta: Sim
//Pergunta: Hoje o Sr(a) utiliza dinheiro como forma de pagamento de suas compras , caso disponibilizassemos o pagamento via cartão de débito, o Sr(a) gostaria ? / Resposta: Não
//Pergunta: Também disponibilizamos o modo de pagamento via Boleto, você gostaria de optar por esta forma de pagamento ? / Resposta: Sim

Jsonlint is an excellent tool to validate your JSON.

json_decode decodes a JSON string.

file_get_contents reads all the contents of a file to a string.

I hope I’ve helped!

  • Lipespry, thanks for the return that already gave an clarified where I’m missing, good , worked perfectly , so in this case I will need to save to the bank in the structure but a doubt, as each research is in a different form they will not have the name of research1,Research 2, Research 3.... but only "research". with this in mind I can realize their result by placing the output of each result, in line with each research group?

  • Yes. No problem. Only organized this way based on the code you posted.

Browser other questions tagged

You are not signed in. Login or sign up in order to post.