Внутренний массив JSON не может быть доступен в Javascript, но может консоль журнала полный JSON - PullRequest
0 голосов
/ 11 декабря 2018

console.log(e.responseText); testNature(e.responseText.responses[0]);

Я не могу использовать внутренний массив ответа JSON, который говорит: -

'Uncaught TypeError: Невозможно прочитать свойство' 0 'из неопределенного'

когда я консоль регистрирую e.responseText, я получаю: -

 {
  "responses": [
    {
      "labelAnnotations": [
        {
          "mid": "/m/06mb1",
          "description": "rain",
          "score": 0.930509,
          "topicality": 0.930509
        },
        {
          "mid": "/m/0838f",
          "description": "water",
          "score": 0.91255623,
          "topicality": 0.91255623
        },
        {
          "mid": "/m/01ctsf",
          "description": "atmosphere",
          "score": 0.86684966,
          "topicality": 0.86684966
        },
        {
          "mid": "/m/04k84",
          "description": "light",
          "score": 0.8194458,
          "topicality": 0.8194458
        },
        {
          "mid": "/m/01bqvp",
          "description": "sky",
          "score": 0.7569251,
          "topicality": 0.7569251
        }
      ]
    }
  ]
}

, но не могу использовать внутренний массив e.responseText.responses[0] для вызова функции, т.е. testNature (e.responseText.responses [0]).Я получил JSON от Google Cloud зрение API

Ответы [ 2 ]

0 голосов
/ 11 декабря 2018

Короткая версия

Преобразование строки в объект с использованием:

responseText = JSON.parse(responseText);

Объяснение

e.responseText.responses[0]

выдает ошибку - Невозможно прочитать свойство 0 из неопределенного

Значит e.responseText.responses не определено.

Значит e.responseText не имеет определенного свойства responses

Значит e.responseText не тот объект, который мы ищем.

В этом контексте это означает, что тип e.responseText является вероятной строкой

Для подтверждения, зарегистрируйте тип данных того же типа, используя:

console.log(typeof(e.responseText))

, если это дает вывод string, преобразовать то же самое в объект, используя JSON.parse

0 голосов
/ 11 декабря 2018

Ошибка, которую вы видите, вероятно, является результатом responseText объекта, который не содержит свойства responses.Приведенный вами пример работает.

const e = {
  "responseText": {
    "responses": [
      {
        "labelAnnotations": [
          {
            "mid": "/m/06mb1",
            "description": "rain",
            "score": 0.930509,
            "topicality": 0.930509
          },
          {
            "mid": "/m/0838f",
            "description": "water",
            "score": 0.91255623,
            "topicality": 0.91255623
          },
          {
            "mid": "/m/01ctsf",
            "description": "atmosphere",
            "score": 0.86684966,
            "topicality": 0.86684966
          },
          {
            "mid": "/m/04k84",
            "description": "light",
            "score": 0.8194458,
            "topicality": 0.8194458
          },
          {
            "mid": "/m/01bqvp",
            "description": "sky",
            "score": 0.7569251,
            "topicality": 0.7569251
          }
        ]
      }
    ]
  }
}

const testNature = o => { console.log(o); }

testNature(e.responseText.responses[0]);
...