首页 > 解决方案 > 使用路径从 JSON 对象获取数据

问题描述

假设我有一个这样的 JSON 对象:

var data = {
    "name": "abcd",
    "age": 21,
    "address": {
        "streetAddress": "88 8nd Street",
        "city": "New York"
    },
    "phoneNumber": [
        {
            "type": "home",
            "number": "111 111-1111"
        },
        {
            "type": "fax",
            "number": "222 222-2222"
        }
    ]
}

我想通过使用字符串路径从这个json对象中获取信息,比如

var age = 'data/age'; // this path should return age
var cityPath = 'data/address/city'; // this path should return city
var faxNumber = 'data/phoneNumber/1/number'; // this path should return fax number

有什么办法可以从字符串路径中获取这些信息?目前我正在拆分路径/,然后像data.ageor一样使用它data.address.city。但是这种方法对于 JSON 对象中包含的任何数组都没有用。

对于这个问题,JavaScript 中有没有更好和最优的方法?

标签: javascriptjsonjsonpath

解决方案


这是您可以从 JSON 访问数据的方式,无需使用路径:

var data = {
    "name": "abcd",
    "age": 21,
    "address": {
        "streetAddress": "88 8nd Street",
        "city": "New York"
    },
    "phoneNumber": [
        {
            "type": "home",
            "number": "111 111-1111"
        },
        {
            "type": "fax",
            "number": "222 222-2222"
        }
    ]
}

var age = data.age;
var cityPath = data.address.city;
var faxNumber = data.phoneNumber[0].number; // array first item begins with 0

console.log({age, cityPath, faxNumber})

如果您出于某种原因确实需要使用路径,我建议使用 lodashget方法https://lodash.com/docs#get


推荐阅读