Php separate json ond fields are without pattern

0

I'm trying to separate a json string that returns from the bank but without success so far. The problem is in the questionnaire tag, where the result is dynamic and will always be different. I need to separate the question from the questionnaire and its response according to the research. Thanks in advance for 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"}"}
    
asked by anonymous 18.04.2018 / 14:43

1 answer

1

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

Incidentally, your 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 JSON data file and "pulled" the content in PHP, to decode it. The result was as follows:

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

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

Output looks 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 the entire contents of a file to a string.

I hope I have helped!

    
18.04.2018 / 15:37