Javascript JSON获取子属性的值
我正在进行API调用并返回一些数据。我遇到的问题是访问JSON的第二级“logos_here[]”。目标是只从所有对象返回url数据。我已经附上了数据和我现在使用的东西,这甚至让我接近 这里的数据Javascript JSON获取子属性的值,javascript,jquery,json,lodash,Javascript,Jquery,Json,Lodash,我正在进行API调用并返回一些数据。我遇到的问题是访问JSON的第二级“logos_here[]”。目标是只从所有对象返回url数据。我已经附上了数据和我现在使用的东西,这甚至让我接近 这里的数据 { "data": { "object": { "metadata": { "logos_here": [ { "logo1": {
{
"data": {
"object": {
"metadata": {
"logos_here": [
{
"logo1": {
"url": "https://cosmicjs.com/upload/logo1.jpg",
"imgix_url": "https://cosmicjs.imgix.net/logo1.jpg"
}
},
{
"logo2": {
"url": "https://cosmicjs.com/upload/logo2.jpg",
"imgix_url": "https://cosmicjs.imgix.net/logo2.jpg"
}
},
{
"logo3": {
"url": "https://cosmicjs.com/upload/logo3.jpg",
"imgix_url": "https://cosmicjs.imgix.net/logo3.jpg"
}
},
{
"logo4": {
"url": "https://cosmicjs.com/upload/logo4.jpg",
"imgix_url": "https://cosmicjs.imgix.net/logo4.jpg"
}
},
{
"logo5": {
"url": "https://cosmicjs.com/upload/logo5.jpg",
"imgix_url": "https://cosmicjs.imgix.net/logo5.jpg"
}
}
]
}
}
}
}
代码在这里
var response_json = JSON.parse(response.responseText);
var page = response_json.data.object;
var main_image = page.metadata.logos_here;
function listData(main_image) {
var html = "<ul>";
$.each(main_image, function(key, val) {
html += "</br>";
if (typeof val === "object")
html += listData(val);
else
html += val;
html += "</br>";
});
html += "</ul>";
return html;
};
$(listData(main_image)).appendTo("body");
var response\u json=json.parse(response.responseText);
var page=response_json.data.object;
var main_image=page.metadata.logos_此处;
函数列表数据(主图像){
var html=“”;
$。每个(主图像、功能(键、值){
html+=“”;
if(typeof val==“对象”)
html+=listData(val);
其他的
html+=val;
html+=“”;
});
html+=“
”;
返回html;
};
$(listData(main_image)).appendTo(“body”);
我想提取的只是“url”值,并将它们显示在li中。感谢您的帮助 此代码假定
logos\u中的每个对象仅包含一个属性。它使用Object.keys()
获取该属性名称,然后使用该名称获取对象及其url
属性
function listData(main_image) {
var html = "<ul>";
$.each(main_image, function(index, val) {
var key = Object.keys(val)[0];
var url = val[key].url;
html += "<li>" + url + "</li>";
});
html += "</ul>";
return html;
};
函数列表数据(主图像){
var html=“”;
$.each(主图像、函数(索引、val){
var key=Object.keys(val)[0];
var url=val[key].url;
html+=“- ”+url+“
”;
});
html+=“
”;
返回html;
};
如果每个对象中可以有多个特性,则可以使用嵌套循环
function listData(main_image) {
var html = "<ul>";
$.each(main_image, function(index, val) {
$.each(val, function(key, obj) {
html += "<li>" + obj.url + "</li>";
});
});
html += "</ul>";
return html;
};
函数列表数据(主图像){
var html=“”;
$.each(主图像、函数(索引、val){
$。每个(val,功能(键,obj){
html+=“- ”+obj.url+“
”;
});
});
html+=“
”;
返回html;
};
此代码假定logos\u中的每个对象仅包含一个属性。它使用Object.keys()
获取该属性名称,然后使用该名称获取对象及其url
属性
function listData(main_image) {
var html = "<ul>";
$.each(main_image, function(index, val) {
var key = Object.keys(val)[0];
var url = val[key].url;
html += "<li>" + url + "</li>";
});
html += "</ul>";
return html;
};
函数列表数据(主图像){
var html=“”;
$.each(主图像、函数(索引、val){
var key=Object.keys(val)[0];
var url=val[key].url;
html+=“- ”+url+“
”;
});
html+=“
”;
返回html;
};
如果每个对象中可以有多个特性,则可以使用嵌套循环
function listData(main_image) {
var html = "<ul>";
$.each(main_image, function(index, val) {
$.each(val, function(key, obj) {
html += "<li>" + obj.url + "</li>";
});
});
html += "</ul>";
return html;
};
函数列表数据(主图像){
var html=“”;
$.each(主图像、函数(索引、val){
$。每个(val,功能(键,obj){
html+=“- ”+obj.url+“
”;
});
});
html+=“
”;
返回html;
};
val
不是一个包含“logo1”
、“logo2”
等的对象吗?它没有直接包含“url”
哦,没有注意到嵌套的额外级别。我自己差点错过了!我已经盯着这个看了几分钟了。原因。为什么它返回一个具有不同键的对象数组,而不是一个具有多个键的单个对象?我已经更新了代码以获取对象中的单个属性。val
不是一个包含“logo1”
,“logo2”
等的对象吗?它没有直接包含“url”
哦,没有注意到嵌套的额外级别。我自己差点错过了!我已经盯着这个看了几分钟了。出于某些原因。为什么它返回一个具有不同键的对象数组,而不是一个具有多个键的单个对象?我已经更新了代码以获取对象中的单个属性。