无法在 javascript 中访问内部 json 数组,但可以控制台记录完整的 json

inner json array cannot be accessed in javascript, but can console log the complete json

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

我无法使用 JSON 响应的内部数组,它说:-

'Uncaught TypeError: 无法读取 属性 '0' of undefined'

当我控制台记录 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]) 。我从 google 云视觉 API

得到了 JSON

您看到的错误可能是 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]);

简短版

使用以下方法将字符串转换为对象:

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

将其转换为对象