【问题标题】:How to access complicated JSON array & object data?如何访问复杂的 JSON 数组和对象数据?
【发布时间】:2021-01-21 13:21:36
【问题描述】:

我被困在以角度访问应用程序的复杂 JSON 数据,这就是它的外观。

{
"members": [
{
"member_id": "1",
"first_name": "John",
"last_name": "Doe",
"education_and_career": "[{\"highest_education\":\"MSc\",\"occupation\":\"Lead Developer\",\"annual_income\":\"100,000 USD\"}]",
}]};

我可以使用 data.member_id 访问 member_id,名字,但我无法访问 data.education_and_career.highest_education 值。我知道这可能看起来很简单,但我被困住了,所以非常感谢你的时间。

谢谢。

【问题讨论】:

  • education_and_career 不是数组,它是一个字符串,其中包含 JSON 编码的数据。您需要 JSON.parse 将该字符串转换为可以访问其元素的数组。或者您应该修复生成该 JSON 的任何内容,而不是使其对您的数据进行双重编码。
  • 您好,实际上我无法更改后端数据,您能否帮我一个忙,详细说明如何将 JSON.parse 解析为特定值?
  • let arr = JSON.parse(data.education_and_career),然后访问arr作为数组...?!
  • 实际上我正在返回我从后端接收的数据并使用 angular ngfor 在前端循环。
  • 实际上这与我所说的没有任何根本区别。

标签: javascript json angular typescript


【解决方案1】:

看起来education_and_career 不是对象数组。您需要使用 String.replace() 方法删除 \ 并将其转换为 JSON 数据,您将能够访问 highest_education 值,例如education_and_career[0].highest_enducation_value 左右。

【讨论】:

  • 如果我们正在查看完整的 JSON 响应,那么反斜杠就可以了,不能被替换...
  • 听起来你是对的。假设其他键值对看起来像 JSON 对象,但 education_and_career 数组看起来有点像字符串。
【解决方案2】:

"education_and_career" 是一个包含 JSON 字符串的字段,因此您不能像普通数组一样使用它。但是,您可以使用 JSON.parse 方法来解析它。因此,为了访问 hieghest_education 字段,您可以这样做:

JSON.parse(data.education_and_career)[0].highest_education

【讨论】:

    【解决方案3】:

    您需要将education_and_career 属性解析为JSON。以下是带有 map 函数或 for 循环的示例

    var data = {
      "members": [{
        "member_id": "1",
        "first_name": "John",
        "last_name": "Doe",
        "education_and_career": "[{\"highest_education\":\"MSc\",\"occupation\":\"Lead Developer\",\"annual_income\":\"100,000 USD\"}]",
      }]
    };
    var parsed=data.members.map(i=>JSON.parse(i.education_and_career));
    console.log("parsed",parsed)
    
    for (i = 0; i < data.members.length; i++) {
      console.log(JSON.parse(data.members[i].education_and_career))
    }
    

    【讨论】:

    • 我会试试这个。
    猜你喜欢
    • 2018-08-28
    • 1970-01-01
    • 2020-12-15
    • 1970-01-01
    • 2022-01-18
    • 1970-01-01
    • 2017-12-29
    • 1970-01-01
    • 2018-09-09
    相关资源
    最近更新 更多