【问题标题】:How to get the value of a deep nested json object?如何获取深度嵌套的 json 对象的值?
【发布时间】:2017-12-19 20:24:28
【问题描述】:

我正在使用 javascript 开发一个应用程序,并且我有这个 json 对象(这是实际 json 对象的简化示例)

{
  "data": [
    "user": {
      "pictures"{
        "sizes"[
          0: {
            "link": "http://www"
          },
          1: {
            "link": "http://"
          }
        ]
      }
    }
  ]
}

我想获取链接的值,所以我尝试了data.user.pictures.sizes[0].link,它返回了一个错误。如何获得正确的价值?

编辑:我正在使用地图函数来循环数据对象,因此我可以在 html 页面中显示值。它适用于大多数其他项目,除了图片尺寸,我似乎无法获得尺寸数组中第二个项目的值。

【问题讨论】:

  • 您使用什么工具和编程语言?是Javascript吗?
  • 你能再分享一些代码吗?你使用什么语言?
  • 图片后面没有分号,你的原码可以吗?
  • 我正在使用 javascript,并映射到 json 对象以在 html 页面中显示 json 对象。很抱歉json格式,它不是原始格式,我只是试图复制它。

标签: javascript json


【解决方案1】:

从数据来看,'data' 包含数组,sizes 包含包含属性 0 和 1 的对象的数组,所以这样做

data[0].user.pictures.sizes[0].0.link

【讨论】:

  • 我已经在使用 map 函数来循环对象,但在 picture.sizes 中我只想获取第二个数组项的值。
【解决方案2】:

首先,"pictures" 和 "sizes" 需要有冒号:)

其次,这取决于你的结构是什么。

例如:

如果您需要使用示例中出现的数组:

var a = {
    "data": [
        {
            "user": {
                "pictures": {
                    "sizes": [
                        {
                            0: {
                                "link": "http://www"
                            }
                        },
                        {
                            1: {
                                "link": "http://"
                            }
                        }
                    ]
                }
            }
        }
    ]
}

console.log(a.data[0].user.pictures.sizes[0][0].link);

或者你只需​​要一个没有数组的json:

var b = {
    "data": {
        "user": {
            "pictures": {
                "sizes": {
                    0: {
                        "link": "http://www"
                    },
                    1: {
                        "link": "http://"
                    }
                }
            }
        }
    }
}

console.log(b.data.user.pictures.sizes[0].link);

或者你甚至可以混合它们:

var c = {
    "data": {
        "user": {
            "pictures": {
                "sizes": [
                    {
                        "link": "http://www"
                    },
                    {
                        "link": "http://"
                    }
                ]
            }
        }
    }
}

console.log(c.data.user.pictures.sizes[0].link);

请注意"sizes" 在b 和c 中的细微差别以及a 的双精度数组。这是因为以索引为键的 json 与数组相同。检查这个例子:

var example = [
    {
        0: "example00",
        1: "example01",
        2: "example02"
    },
    {
        0: "example10",
        1: "example11",
        2: "example12"
    },
]

console.log(example[0][1]); // == example01

你可以看到example数组中有2个数组

希望有帮助:)

【讨论】:

  • 它有帮助。谢谢!似乎真正的问题不是对象的路径,而是有一个值为 null 的链接,这会导致错误并且无法显示其余数据。
【解决方案3】:

您的 JSON 错误,应该如下:

var js = {  
   "data": {  
      "user":{  
         "pictures":{  
            "sizes":[  
               {  
                  "link":"http://www"
               },
               {  
                  "link":"http://"
               }
            ]
         }
      }
   }
}

获取值:

js.data.user.pictures.sizes[0].link

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 2021-10-02
    • 1970-01-01
    • 2017-04-27
    • 1970-01-01
    相关资源
    最近更新 更多