gpt4 book ai didi

javascript - 使用 JavaScript 从 JSON 中的对象中提取对象

转载 作者:行者123 更新时间:2023-11-30 09:45:41 25 4
gpt4 key购买 nike

所以,我可以访问一个 JSON 文件,我应该以一种简洁的方式列出一些项目。然而,JSON 文件是以我不熟悉的方式编写的。我有以下代码:

function readFile(file) {
var rawFile = new XMLHttpRequest();
rawFile.open("GET", file, false);
rawFile.onreadystatechange = function ()
{
if (rawFile.readyState === 4 && rawFile.status === 200)
{
window.openedFile = JSON.parse(rawFile.responseText);
console.log(JSON.stringify(openedFile, undefined, 4));
createList();

}
};
rawFile.send();
}


function createList() {
var table = document.createElement('table');
var body = document.createElement('tbody');

for (var i = 0; i < openedFile.sites.length; i++) {
var item = document.createElement('tr');
var colSite = document.createElement('td');
colSite.appendChild(document.createTextNode(openedFile.sites[i].name));
item.appendChild(colSite);
body.appendChild(item);
}

table.appendChild(body);
document.getElementById('list').appendChild(table);
}

..它不起作用,因为它声称数组“sites”是空的。控制台输出中的 JSON 文件的结果给出(变量名称略有修改):

{
"sites": {
"1007": {
"id": 1007,
"name": "Location B",
"devices": {
"p3": {
"name": "p3",
"version": "5"
}
}
},
"1337": {
"id": 1337,
"name": "Location A",
"devices": {
"p2": {
"name": "p2",
"version": "5"
},
"p1": {
"name": "p1",
"version": "5"
}
}
}
},
}

如果我更改 JSON 文件并在站点后添加 [] 括号并删除“1007”和“1337”,它看起来就像我习惯的那样(作为普通数组),并且它有效。我很确定我不允许这样做,但在尝试提取有关设备的信息时我再次遇到同样的问题。对于此事,我将不胜感激。澄清一下,如果有其他解决方案,我会尽量避免更改 JSON 文件。

最佳答案

数字 1007 和 1337 是对象 sites 的属性。使用for-in循环遍历对象属性。

var sites = openedFile.sites;
for(var site in sites){
console.log("Key: ", site);
console.log("Value: ", sites[site]);
}

关于javascript - 使用 JavaScript 从 JSON 中的对象中提取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38997318/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com