首页 > 解决方案 > 如何在 JSON 中提取嵌套值并初始化为 JS 变量

问题描述

我的问题在上面,我试图用 45 分钟来提取下面“距离”下的值,但每次尝试都失败了。我希望你们能帮助我。

{
"destination_addresses": [
    "XXXXXXXX 60, 13XXX Berlin, Germany"
],
"origin_addresses": [
    "XXXXXXX Str. 67, 10XXX Berlin, Germany"
],
"rows": [
    {
        "elements": [
            {
                "distance": {
                    "text": "10.4 km",
                    "value": 10365
                },
                "duration": {
                    "text": "21 min",
                    "value": 1278
                },
                "status": "OK"
            }
        ]
    }
],
"status": "OK"
}

所以我需要行下的值->元素->距离然后是值。我在 JavaScript 中尝试过这样的事情:

var payload = JSON.parse(body)
console.log(payload.rows["elements"].distance.value)

谢谢!:)

苏莱曼·德米尔

标签: javascriptjsonapi

解决方案


let distance = payload.rows[0].elements[0].distance.value
console.log(payload)
console.log(distance)

请注意,数据是嵌套数组和对象的混合,它们是 javascript 中的不同数据结构。您可以通过键入对象的名称、后跟一个点和属性的名称 ( object_name.property_name ) 来访问对象的属性。您可以通过在数组名称(array_name[element_number])旁边的方括号中键入元素索引来访问数组的元素。

在我们的例子中,我们访问属性“rows”,它是对象“payload”的数组 - payload.rows。然后我们通过在属性名称旁边键入 [0] 访问该数组的元素编号 [0] - payload.rows[0]。我们得到另一个对象,其中包含“元素”属性 - payload.rows[0].elements。这个属性存储了另一个数组,我们再次访问它的第一个元素 - payload.rows[0].elements[0]。我们得到另一个对象并访问属性“distance”,它最终返回返回另一个包含我们正在寻找的属性“value”的对象 - payload.rows[0].elements[0].distance.value

来源https://eloquentjavascript.net/04_data.html


推荐阅读