gpt4 book ai didi

javascript - 如何使用 JS 解析带有嵌套对象的 JSON 文件?

转载 作者:行者123 更新时间:2023-12-04 13:24:19 25 4
gpt4 key购买 nike

我对 JavaScript 非常陌生,并被赋予了将各种 JSON 文件转换为 excel 电子表格的任务。我无法理解如何解析具有嵌套对象或嵌套数组的 JSON 文件。如果我没有使用正确的措辞,请原谅我。以下是我需要解析的 JSON 数据示例。

  [{
"name": "Kindergarten",
"subject": "Math",
"framework": "NC: Standard Course of Study",
"standards": [
{
"id": 1306687,
"name": "NC.K.CC.1",
"short_description": "Standard 1."
},
{
"id": 1306688,
"name": "NC.K.CC.1.a",
"short_description": "Standard 2."
},
{
"id": 1306689,
"name": "NC.K.CC.1.b",
"short_description": "Standard 3."
}

]
}]

我尝试了很多不同的循环,似乎只能解析文件的第一部分,而不是嵌套部分。我基本上需要数据在完成后看起来像这样:
    name    subject framework   standards/0/id  standards/0/name    standards/0/short_description
Kindergarten Math NC: Standard Course of Study 1306687 NC.K.CC.1 Standard 1.
Kindergarten Math NC: Standard Course of Study 1306688 NC.K.CC.1.a Standard 2.
Kindergarten Math NC: Standard Course of Study 1306689 NC.K.CC.1.b Standard 3.

您可以提供的任何指导都会非常有帮助。

最佳答案

只需使用 JSON.parse("<your JSON string>")用于解析。此函数返回一个反射(reflect)处理后的 JSON 的对象树。然后您可以访问循环中的所有对象属性并生成一个 CSV 文件,该文件可以用 Excel 打开。

let csv = "";

const objects = JSON.parse("<your JSON string>");
for (const o of objects) {
for (const std of o.standards) {
csv += `${o.name},${o.subject},${o.framework},${std.id},${std.name},${std.short_description}`;
}
}
工作示例:

const jsonData = `[{
"name": "Kindergarten",
"subject": "Math",
"framework": "NC: Standard Course of Study",
"standards": [{
"id": 1306687,
"name": "NC.K.CC.1",
"short_description": "Standard 1."
},
{
"id": 1306688,
"name": "NC.K.CC.1.a",
"short_description": "Standard 2."
},
{
"id": 1306689,
"name": "NC.K.CC.1.b",
"short_description": "Standard 3."
}
]
}]`;

/* Escapes all quotes in the input in order to not break the CSV */
function val(input) {
return input?.replaceAll ? input.replaceAll('"', '""') : input;
}

let csv = "";

const objects = JSON.parse(jsonData);
for (const o of objects) {
for (const std of o.standards) {
csv += `"${val(o.name)}","${val(o.subject)}","${val(o.framework)}","${val(std.id)}","${val(std.name)}","${val(std.short_description)}"`;
}
}

console.log(csv);

编辑:
修改了源代码以生成更多保存的 CSV(现在输入中允许双引号和逗号)。感谢@phuzi!

关于javascript - 如何使用 JS 解析带有嵌套对象的 JSON 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69452660/

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