gpt4 book ai didi

javascript - 处理格式不固定的 JSON 数据

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

通常在使用 JSON 时,您会得到一个具有已知和指定格式的 JSON 对象。因此,例如,如果我们正在处理一个列出电影及其标题和评级的网站,那么您的 JSON 数据如下所示:

{
{
"title": "Inception",
"rating": 4
},
{
"title": "The Dark Knight",
"rating": 5
},
etc...
}

在 Javascript 中,循环遍历这个 JSON 很容易:

for (let i = 0; i < movies.length; i++) {
console.log('The title: ' + movies[i][0]);
console.log('The rating: ' + movies[i][1]);
}

但是,如果您获得的 JSON 对象没有上述预定义格式怎么办。示例中的 JSON 由多个对象组成,这些对象都具有两个属性,称为标题和评级。因为结构/格式是已知的,所以很容易相应地循环遍历它。但是当单个 JS 代码必须循环遍历没有预定义格式的 JSON 时,我怎么知道如何循环呢?例如,如果用户可以在对象中放置无限对象而我的代码不知道它与它有什么关系怎么办?

我正在尝试制作一个将 JSON 转换为 HTML 的简单应用程序。使用 HTML(类似于 XML),作为开发人员,您可以选择要将多少元素放入彼此内部。不同的标记具有完全不同的格式,有些人嵌套很多元素,而其他人则不使用很多嵌套元素,等等。我如何处理与 HMTL 解析器处理相同的事情,但使用 JSON?

我尝试至少编写一点代码作为开始,但当我意识到代码确实必须能够处理任何类型的格式时,我就卡住了。

我需要实现什么样的逻辑才能理解这一点?我不是要一段代码来为我做所有这些,但我想知道人们如何处理这样的问题以及可以使用什么样的技巧来实现它。

最佳答案

您可以简单地使用Object.keys 函数。它返回对象中的键数组。然后你循环抛出这个数组

或者

您可以使用for .. in

例子:

let user = {
name: "Me",
age: 100,
website: "http://stackoverflow.com"
};

for (key in user){
console.log(key," ", user[key])
}

更新:如果你想递归地循环具有非固定格式对象的数组。使用 Map 数组函数查看此示例

let myMap = function (arr){  
arr.map((obj) => {
for (key in obj){
if ( obj[key] instanceof Array){
myMap(obj[key])
} else {
console.log(key, " ", obj[key])
}
}
})

}

let myArr = [{
name: "Me",
age: 100,
website: "http://stackoverflow.com"
},
{
name: "You",
age: 99,
questions: [{"q1": "How are you ?"}, {"q2": "What is your name ?"}]
}
]

myMap(myArr)

关于javascript - 处理格式不固定的 JSON 数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42858768/

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