假设我有一个这样的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.age
或data.address.city
那样使用它。但是这种方法对JSON对象中包含的任何数组都没有用。
JavaScript中是否有更好,更优化的方法来解决此问题?
答案 0 :(得分:3)
这是您可以从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})
如果由于某些原因确实需要使用路径,我建议使用lodash get
方法https://lodash.com/docs#get