Javascript 从嵌套的json对象中检索值
我有以下json对象:Javascript 从嵌套的json对象中检索值,javascript,json,filter,lodash,Javascript,Json,Filter,Lodash,我有以下json对象: { "name": "Cairo", "title": "Lots to do in cairo", "categories": ["travel", "holiday"], "image": [ { "thumbnail": { "src": "/images/thumbnail/cairo.jpg", "height": 27, "width": 60 } },
{
"name": "Cairo",
"title": "Lots to do in cairo",
"categories": ["travel", "holiday"],
"image": [
{
"thumbnail": {
"src": "/images/thumbnail/cairo.jpg",
"height": 27,
"width": 60
}
},
{
"mobile": {
"src": "/images/mobile/cairo.jpg",
"height": 106,
"width": 236
}
},
{
"original": {
"src": "/images/original/cairo.jpg",
"height": 866,
"width": 1920
}
}
]
}
我试图使用jquery/lodash/javascript访问这个特定对象的“原始”图像的“src”值
我可以使用以下命令输出值:
var originalSrc = _.result(obj, 'image[2].original.src');
问题是我必须对[2]进行硬编码,但是这个json响应中图像变量的顺序没有固定,因此下次它可能会返回“mobile”src
有人对此有什么解决方案/想法吗
谢谢
AshilJSON的布局很糟糕(正如上面的评论所指出的),但是如果您不能更改它,那么这一行应该可以:
obj.image.filter(函数(x){return Object.keys(x)[0]='original'})[0]。original.src
可以尝试以下操作:
var json={
“姓名”:“开罗”,
“标题”:“开罗有很多事情要做”,
“类别”:[“旅行”、“假日”],
“图像”:[
{
“缩略图”:{
“src”:“/images/thumbnail/cairo.jpg”,
“高度”:27,
“宽度”:60
}
},
{
“移动”:{
“src”:“/images/mobile/cairo.jpg”,
“高度”:106,
“宽度”:236
}
},
{
“原件”:{
“src”:“/images/original/cairo.jpg”,
“高度”:866,
“宽度”:1920
}
}
]
}
var desiredObject=json.image.filter(函数(图像){return Object.keys(图像)[0]=“original”;})[0]
console.log(desiredObject);
log(desiredObject.original.src)代码>您可以尝试通过多个步骤实现解决方案
获取对象属性,在您的情况下,缩略图、移动、原始
是图像对象中数组内对象的属性。
Object.keys(objJSON.image)
检索数组中的所有属性,在这种情况下,由于它是一个数组,因此结果将是[0,1,2]
在图像对象内查找“原始”图像对象。可以使用object[“PropertyName”]
语法访问对象中的属性,方法返回与条件匹配的第一个元素。因此,基本上,我们试图找到包含名为“original”的属性的对象
Object.keys(objJSON.image).find(i=>objJSON.image[i][“original”])代码>
从对象中检索src
属性。
objJSON.image[originalImageIndexInArray].original.src代码>
var objJSON={
“姓名”:“开罗”,
“标题”:“开罗有很多事情要做”,
“类别”:[“旅行”、“假日”],
“图像”:[
{
“缩略图”:{
“src”:“/images/thumbnail/cairo.jpg”,
“高度”:27,
“宽度”:60
}
},
{
“移动”:{
“src”:“/images/mobile/cairo.jpg”,
“高度”:106,
“宽度”:236
}
},
{
“原件”:{
“src”:“/images/original/cairo.jpg”,
“高度”:866,
“宽度”:1920
}
}
]
};
var originalImageIndexInArray=Object.keys(objJSON.image).find(i=>objJSON.image[i][“original”]);
var originalImageSrc=objJSON.image[originalImageIndexInArray].original.src;
console.log(originalImageSrc)
您可以使用从图像
数组中获取带有原始
键的项目,使用获取src
。注意,我们需要通过find
将数组转换data.image
中的方法链接到对象中
var result = _.chain(data.image)
.find('original')
.get('original.src')
.value();
var数据={
“姓名”:“开罗”,
“标题”:“开罗有很多事情要做”,
“类别”:[“旅行”、“假日”],
“图像”:[
{
“缩略图”:{
“src”:“/images/thumbnail/cairo.jpg”,
“高度”:27,
“宽度”:60
}
},
{
“移动”:{
“src”:“/images/mobile/cairo.jpg”,
“高度”:106,
“宽度”:236
}
},
{
“原件”:{
“src”:“/images/original/cairo.jpg”,
“高度”:866,
“宽度”:1920
}
}
]
};
var result=ux0.chain(data.image)
.find('原件')
.get('original.src')
.value();
控制台日志(结果)代码>
您能更改输入json数组吗?如果图像是一个对象,您可以像使用image.original
属性一样访问它,否则您需要创建一个特殊函数来循环数组并查找属性为“original”的对象