Javascript 解析Json(带有数组和对象),并将数据导出到Node.js中的Excel文件中
我是Node.js的新手。我的要求是,我需要解析一个JSON并将数据导出到Excel文件中,其中包含JSON中的所有字段 我的JSON如下:Javascript 解析Json(带有数组和对象),并将数据导出到Node.js中的Excel文件中,javascript,json,node.js,excel,Javascript,Json,Node.js,Excel,我是Node.js的新手。我的要求是,我需要解析一个JSON并将数据导出到Excel文件中,其中包含JSON中的所有字段 我的JSON如下: { "id": 1255, "title": "The Brain and Nervous System (LS1.D)", "description": "By the time you finish this playlist, you should be able to: 1. Describe how the nervous syste
{
"id": 1255,
"title": "The Brain and Nervous System (LS1.D)",
"description": "By the time you finish this playlist, you should be able to: 1. Describe how the nervous system is organized and how it works 2. Describe the role of the nervous sytem, and explain how our different senses work to send information to your brain",
"keyTerms": "You should also be able to define the following words: stimulus, response, neuron, sensory neuron, motor neuron, nerve impulse, dendrite, axon, nerve, central nervous system, peripheral nervous system, brain, spinal cord, cerebrum, cerebellum, brain stem, retina, cochlea",
"visible": true,
"introduction": {
"id": 5336,
"title": "Introductory Materials",
"resources": [
{
"id": 23022,
"title": "Vocabulary - Brain and Nervous System",
"description": "",
"purpose": "",
"category": "Website",
"position": 1,
"contentItem": {
"id": 1650,
"url": "http://quizlet.com/45497180/flashcards",
"itemType": "Website",
"embedUrl": null
}
},
{
"id": 23023,
"title": "The Brain and Nervous System Study Guide",
"description": "Fill out this study guide while studying! It will help you prepare for the assessment!",
"purpose": "",
"category": "Website",
"position": 2,
"contentItem": {
"id": 12581,
"url": "https://docs.google.com/a/summitps.org/document/d/1TjF1MY3cyGNKT4s46uk1iz5NvjrY59eNPH8YKYYTC_E/edit",
"itemType": "Website",
"embedUrl": null
}
}
]
},
"objectives": [
{
"id": 10732,
"title": "1. Describe how the nervous system is organized",
"caContribution": 5,
"position": 1,
"resources": [
{
"id": 23024,
"title": "Reading - How the Nervous System Works",
"description": "",
"purpose": "",
"category": "Document",
"position": 1,
"contentItem": {
"id": 1651,
"url": null,
"itemType": "Document",
"embedUrl": "https://view-api.box.com/1/sessions/493fca96d46a4559813c3118ebeef8b6/view?theme=light",
"s3Url": "/files/content_items/relateds/000/001/651/original/53d1ddd8f07787731aa7d84f-how_20nervous_20system_20works_001.pdf?1424368501"
}
}
]
},
{
"id": 10734,
"title": "2. Describe the role of the nervous sytem, and explain how our different senses work to send information to your brain",
"caContribution": 5,
"position": 2,
"resources": [
{
"id": 23039,
"title": "Study Jams - The Senses",
"description": "This series of videos explains the different senses: sight, hearing, taste, touch, and smell",
"purpose": "",
"category": "Website",
"position": 1,
"contentItem": {
"id": 1666,
"url": "http://studyjams.scholastic.com/studyjams/jams/science/human-body/touching.htm",
"itemType": "Website",
"embedUrl": null
}
},
{
"id": 23040,
"title": "Nervous System: I'm Sensing Something",
"description": "Format: Article Content: How does the nervous system work and interact with other systems",
"purpose": "",
"category": "Website",
"position": 1,
"contentItem": {
"id": 12582,
"url": "http://www.biology4kids.com/files/systems_nervous.html",
"itemType": "Website",
"embedUrl": null
}
}
]
}
]
}
id title description keyTerms visible introduction.id introduction.title introduction.resources.id introduction.resources.title introduction.resources.description introduction.resources.purpose introduction.resources.category introduction.resources.position introduction.resources.contentItem.id introduction.resources.contentItem.url introduction.resources.contentItem.itemType introduction.resources.contentItem.embedUrl objectives.id objectives.title objectives.caContribution objectives.position objectives.resources.id objectives.resources.title objectives.resources.description objectives.resources.purpose objectives.resources.category objectives.resources.position objectives.resources.contentItem.id objectives.resources.contentItem.url objectives.resources.contentItem.itemType objectives.resources.contentItem.embedUrl objectives.resources.contentItem.s3Url
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true 5336 Introductory Materials 23022 Vocabulary - Brain and Nervous System null null Website 1 1650 http://quizlet.com/... Website null null null null null null null null null null null null null null null null
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true 5336 Introductory Materials 23023 The Brain and Nervous System Study Guide Fill out this... null Website 2 12581 https://docs.google.com/... Website null null null null null null null null null null null null null null null null
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true null null null null null null null null null null null null 10732 1. Describe how... 5 1 23024 Reading - How... null null Document 1 1651 null Document https://view-api.box.com/1... /files/content...
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true null null null null null null null null null null null null 10734 2. Describe the role... 5 2 23039 Study Jams - The Senses This series of videos null Website 1 1666 http://studyjams.scholastic.com... Website null
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true null null null null null null null null null null null null 10734 2. Describe the role... 5 2 23040 Nervous System: I'm Sensing... Format: Article Content... null Website 1 12582 http://www.biology4kids.com... Website null
我使用了json2xls模块,得到了带有字段id、标题、描述、关键字、可见项、简介、目标的电子表格,其中简介和目标类似于[object][object],[object][object]
以下是要导出到excel文件的代码:
var fs = require("fs");
var json2xls = require("json2xls");
fs.readFile('/home/e100093/nodejs/sampleJson.json','utf8',function(err,body){
var jsonData = JSON.parse(body);
var xls = json2xls(jsonData);
fs.writeFileSync('final-test.xlsx', xls, 'binary');
});
但我需要输出字段,如id、title、description、keyTerms、visible、introduction.id、introduction.resources.id、introduction.resources.title、…、objectives.id、objectives.title、objectives.description等
我需要动态解析对象和数组,并在电子表格的每一列中生成字段
包含列和数据的示例输出如下所示:
{
"id": 1255,
"title": "The Brain and Nervous System (LS1.D)",
"description": "By the time you finish this playlist, you should be able to: 1. Describe how the nervous system is organized and how it works 2. Describe the role of the nervous sytem, and explain how our different senses work to send information to your brain",
"keyTerms": "You should also be able to define the following words: stimulus, response, neuron, sensory neuron, motor neuron, nerve impulse, dendrite, axon, nerve, central nervous system, peripheral nervous system, brain, spinal cord, cerebrum, cerebellum, brain stem, retina, cochlea",
"visible": true,
"introduction": {
"id": 5336,
"title": "Introductory Materials",
"resources": [
{
"id": 23022,
"title": "Vocabulary - Brain and Nervous System",
"description": "",
"purpose": "",
"category": "Website",
"position": 1,
"contentItem": {
"id": 1650,
"url": "http://quizlet.com/45497180/flashcards",
"itemType": "Website",
"embedUrl": null
}
},
{
"id": 23023,
"title": "The Brain and Nervous System Study Guide",
"description": "Fill out this study guide while studying! It will help you prepare for the assessment!",
"purpose": "",
"category": "Website",
"position": 2,
"contentItem": {
"id": 12581,
"url": "https://docs.google.com/a/summitps.org/document/d/1TjF1MY3cyGNKT4s46uk1iz5NvjrY59eNPH8YKYYTC_E/edit",
"itemType": "Website",
"embedUrl": null
}
}
]
},
"objectives": [
{
"id": 10732,
"title": "1. Describe how the nervous system is organized",
"caContribution": 5,
"position": 1,
"resources": [
{
"id": 23024,
"title": "Reading - How the Nervous System Works",
"description": "",
"purpose": "",
"category": "Document",
"position": 1,
"contentItem": {
"id": 1651,
"url": null,
"itemType": "Document",
"embedUrl": "https://view-api.box.com/1/sessions/493fca96d46a4559813c3118ebeef8b6/view?theme=light",
"s3Url": "/files/content_items/relateds/000/001/651/original/53d1ddd8f07787731aa7d84f-how_20nervous_20system_20works_001.pdf?1424368501"
}
}
]
},
{
"id": 10734,
"title": "2. Describe the role of the nervous sytem, and explain how our different senses work to send information to your brain",
"caContribution": 5,
"position": 2,
"resources": [
{
"id": 23039,
"title": "Study Jams - The Senses",
"description": "This series of videos explains the different senses: sight, hearing, taste, touch, and smell",
"purpose": "",
"category": "Website",
"position": 1,
"contentItem": {
"id": 1666,
"url": "http://studyjams.scholastic.com/studyjams/jams/science/human-body/touching.htm",
"itemType": "Website",
"embedUrl": null
}
},
{
"id": 23040,
"title": "Nervous System: I'm Sensing Something",
"description": "Format: Article Content: How does the nervous system work and interact with other systems",
"purpose": "",
"category": "Website",
"position": 1,
"contentItem": {
"id": 12582,
"url": "http://www.biology4kids.com/files/systems_nervous.html",
"itemType": "Website",
"embedUrl": null
}
}
]
}
]
}
id title description keyTerms visible introduction.id introduction.title introduction.resources.id introduction.resources.title introduction.resources.description introduction.resources.purpose introduction.resources.category introduction.resources.position introduction.resources.contentItem.id introduction.resources.contentItem.url introduction.resources.contentItem.itemType introduction.resources.contentItem.embedUrl objectives.id objectives.title objectives.caContribution objectives.position objectives.resources.id objectives.resources.title objectives.resources.description objectives.resources.purpose objectives.resources.category objectives.resources.position objectives.resources.contentItem.id objectives.resources.contentItem.url objectives.resources.contentItem.itemType objectives.resources.contentItem.embedUrl objectives.resources.contentItem.s3Url
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true 5336 Introductory Materials 23022 Vocabulary - Brain and Nervous System null null Website 1 1650 http://quizlet.com/... Website null null null null null null null null null null null null null null null null
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true 5336 Introductory Materials 23023 The Brain and Nervous System Study Guide Fill out this... null Website 2 12581 https://docs.google.com/... Website null null null null null null null null null null null null null null null null
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true null null null null null null null null null null null null 10732 1. Describe how... 5 1 23024 Reading - How... null null Document 1 1651 null Document https://view-api.box.com/1... /files/content...
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true null null null null null null null null null null null null 10734 2. Describe the role... 5 2 23039 Study Jams - The Senses This series of videos null Website 1 1666 http://studyjams.scholastic.com... Website null
1255 The Brain and Nervous System (LS1.D) By the time you finish... You should also... true null null null null null null null null null null null null 10734 2. Describe the role... 5 2 23040 Nervous System: I'm Sensing... Format: Article Content... null Website 1 12582 http://www.biology4kids.com... Website null
请帮助我如何执行此操作。您使用的是json2xls模块,它接受对象或数组,但接受嵌套级别的对象结构。我的意思是,如果介绍和目标是标量属性,那么您的定义就可以了。即
{
"id": 1255,
"title": "...)",
"description": "...",
"keyTerms": "...",
"visible": true,
"introduction": "string/int/float/bool/date",
"objectives": "string/int/float/bool/date"
}
或
但在您的例子中,简介是一个具有嵌套元素的对象,而目标是一个对象数组,两者都被解释为[object][object]
我不知道您想要在excel文件中显示什么,但您需要先决定如何展平结构。您可以使用带有特殊SEARCH
运算符的javascript库来执行此操作,该运算符用于搜索嵌套对象。请参阅下面的代码,该代码使用您的结构生成Excel文件(我没有包括所有字段):
一些解释:
- 搜索-是用于查询嵌套对象的特殊语句
- /-数组元素上的循环
- UNION ALL(…,…)-找到的所有嵌套记录的UNION
- AS@variable-将当前搜索位置保存到临时变量
- 介绍-深入了解物业“介绍”
- RETURN(…,…)-创建具有属性的记录(JSON对象)
- RETURN(值作为别名)-值的别名
- @->id-get id属性类似于JavaScript中的a.id
- […]-具有任何特殊字符的术语
- 放入XLSX(“test411.XLSX”,{headers:true})-将结果保存到带有标题的Excel文件中
- 从从参数获取数据
- alasql(sql,[data])-将数据变量作为查询的第一个参数
到XLSX()
,并且alasql()
将返回一个包含所有属性的JSON对象:
var res = alasql('SEARCH / AS @a UNION ALL(...) FROM ?',[data]);
console.log(res);
以下是请同时提供用于创建excel文件的代码@MojoJojo是的,我添加了用于导出JSON数据的代码。请提供一个您想要实现的数据示例。@LazarevAlexandr我添加了一个我想要实现的示例输出。符合我要求的任何其他形式的输出也可以。
test411.xlsx
因此不包含来自建议的json
文件的目标
,尽管目标
存在于alasql
搜索查询中。你能解释一下原因吗?