Фильтрация Json Использование Javascript - PullRequest
0 голосов
/ 09 июля 2020

У меня есть следующее JSON из вызова php ajax, и я хочу отобразить некоторые данные для пользователей:

JSON

{"headers":{},"body":"{\"comuni\":[{\"datapresub\":\"08\/08\/2018\",\"datasub\":\"01\/02\/2018\",\"nomeComune\":\"ROMA\",\"provincia\":\"RM\"}]}","response":{"code":200,"message":"OK"},"cookies":[{"name":"bcf106ed7722e1b4a749630715ee3e66","value":"5338310d3fecaa76e2c9c583dfb02ddd","expires":null,"path":"\/","domain":"anpr-servizi-portale-anpr-portale-ocptest.ocpval.sogei.it","host_only":true}],"filename":null,"http_response":{"data":null,"headers":null,"status":null}}

Это мой скрипт:

success: function(data) {
                            console.log(data);
                            var jsonData = JSON.parse(data);  
                            if(jsonData[0].datasub != 0) {
                                $('.nome-comune').html(jsonData[0].nomeComune);
                                $('.provincia').html(jsonData[0].provincia);
                                $('.data-sub').html(jsonData[0].datasub);
                                resultsSub();
                            } else if(jsonData[0].datapresub != 0 && jsonData[0].datasub == 0) {
                                $('.nome-comune').html(jsonData[0].nomeComune);
                                $('.provincia').html(jsonData[0].provincia);
                                $('.data-presub').html(jsonData[0].datapresub);
                                resultsPresub();
                            } else if(jsonData[0].datapresub == 0 && jsonData[0].datasub == 0) {
                                $('.nome-comune').html(jsonData[0].nomeComune);
                                $('.provincia').html(jsonData[0].provincia);
                                noAnpr();
                            }     
                        }

Я получил следующую ошибку:

TypeError: jsonData[0] is undefined

Есть идея решить эту проблему?

Ответы [ 2 ]

1 голос
/ 09 июля 2020

Ваш объект не является массивом, вы не можете получить к нему доступ как jsonData[0]. Также ваш body JSON находится внутри строки, вы также должны проанализировать его, если хотите читать из него.

Код:

const jsonData = {
  "headers": {},
  "body": "{\"comuni\":[{\"datapresub\":\"08\\/08\\/2018\",\"datasub\":\"01\\/02\\/2018\",\"nomeComune\":\"ROMA\",\"provincia\":\"RM\"}]}",
  "response": {
    "code": 200,
    "message": "OK"
  },
  "cookies": [
    {
      "name": "bcf106ed7722e1b4a749630715ee3e66",
      "value": "5338310d3fecaa76e2c9c583dfb02ddd",
      "expires": null,
      "path": "\\/",
      "domain": "anpr-servizi-portale-anpr-portale-ocptest.ocpval.sogei.it",
      "host_only": true
    }
  ],
  "filename": null,
  "http_response": {
    "data": null,
    "headers": null,
    "status": null
  }
}

const body = JSON.parse(jsonData.body)

// Let's check if "body.comuni[0].datasub" exists before working with it.
if (body && body.comuni && body.comuni[0] && body.comuni[0].datasub) {
    console.log(body.comuni[0].datasub)

    if(body.comuni[0].datasub != 0) {
        // Add the rest of your logic here.
    }
}
0 голосов
/ 09 июля 2020

Вы можете увидеть, распечатав проанализированный json, это объект, а не массив.

var json = '{"headers":{},"body":{\"comuni\":[{\"datapresub\":\"08\/08\/2018\",\"datasub\":\"01\/02\/2018\",\"nomeComune\":\"ROMA\",\"provincia\":\"RM\"}]},"response":{"code":200,"message":"OK"},"cookies":[{"name":"bcf106ed7722e1b4a749630715ee3e66","value":"5338310d3fecaa76e2c9c583dfb02ddd","expires":null,"path":"\/","domain":"anpr-servizi-portale-anpr-portale-ocptest.ocpval.sogei.it","host_only":true}],"filename":null,"http_response":{"data":null,"headers":null,"status":null}}';

console.log(JSON.parse(json))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...