Javascript 如何使用lodash从json返回childobject?
假设我有以下json文件,并且我希望返回“existing.primaryBundle.products”数组,最好使用lodash:Javascript 如何使用lodash从json返回childobject?,javascript,json,lodash,Javascript,Json,Lodash,假设我有以下json文件,并且我希望返回“existing.primaryBundle.products”数组,最好使用lodash: { "existing": { "hasPlatinum": false, "primaryBundle": { "id": "2008", "name": "TV - Entertainment, Sport", "products": [ { "name": "Ent
{
"existing": {
"hasPlatinum": false,
"primaryBundle": {
"id": "2008",
"name": "TV - Entertainment, Sport",
"products": [
{
"name": "Entertainment",
"id": "100",
"price": 2600,
"gifted": false
},
{
"name": "Sport",
"id": "107",
"price": 2500,
"gifted": false,
"swappableProducts": [
{
"name": "Movies",
"id": "105",
"price": 2000,
"gifted": false
}
]
}
]
},
"extrasBundle": {
"id": "131",
"name": "Optional Extras - MUTV (Sports), LFCTV (Sports), Chelsea TV (Sports)",
"products": [
{
"name": "MUTV (Sports)",
"id": "665",
"price": 0,
"gifted": false
},
{
"name": "LFCTV (Sports)",
"id": "666",
"price": 0,
"gifted": false
},
{
"name": "Chelsea TV (Sports)",
"id": "667",
"price": 0,
"gifted": false
}
]
}
}
}
我曾尝试过lodash,并使用以下语句:
list2=u2;.pick(现有,'primaryBundle.products')
但这将返回一个错误,而不是想要的结果。如何选择此products数组?它返回错误的主要原因是
现有的
不是一个全局范围的对象,您必须将对象分配给某个变量,如const obj={…}
,然后将参数作为obj.existing
传递给\u pick
方法,但是我看不出在这里使用lodash的理由,您可以直接引用该对象的路径。您可以使用.get(nameOfObject,'existing.primaryBundle.products')
当然您需要像我下面使用sampleObject那样命名您的对象
你也可以去看看洛达斯
假设您已经解析了JSON字符串以获得一个对象obj
,您可以说list2=obj.existing.primaryBundle.products
。不需要洛达斯。
const sampleObject = {
"existing": {
"hasPlatinum": false,
"primaryBundle": {
"id": "2008",
"name": "TV - Entertainment, Sport",
"products": [{
"name": "Entertainment",
"id": "100",
"price": 2600,
"gifted": false
}, {
"name": "Sport",
"id": "107",
"price": 2500,
"gifted": false,
"swappableProducts": [{
"name": "Movies",
"id": "105",
"price": 2000,
"gifted": false
}]
}]
},
"extrasBundle": {
"id": "131",
"name": "Optional Extras - MUTV (Sports), LFCTV (Sports), Chelsea TV (Sports)",
"products": [{
"name": "MUTV (Sports)",
"id": "665",
"price": 0,
"gifted": false
}, {
"name": "LFCTV (Sports)",
"id": "666",
"price": 0,
"gifted": false
}, {
"name": "Chelsea TV (Sports)",
"id": "667",
"price": 0,
"gifted": false
}]
}
}
}
console.log(_.get(sampleObject, 'existing.primaryBundle.products'));