解析嵌套JSON数组成单独的JSON对象与Node.js的
需要帮助解析嵌套数组成使用Node.js的单独的对象非常感谢帮助。解析嵌套JSON数组成单独的JSON对象与Node.js的
我需要在最终输出 -
"Status": "0",
"Message": "OK",
"Count": "3724",
和
我需要有以下作为单独的JSON对象 -
- InvoiceRecords(出现一个没有这些time in json)
- InvoiceRecordHeaderDetails(发生m在JSON ultiple倍)
- InvoiceRecordSplitDetails(发生在JSON多次)
- InvoiceRecordLineItemDetails(发生在JSON多次)
- InvoiceTaxCodeDetails(发生在JSON多次)
具有以下JSON数据样本(截断):
{
"Status": "0",
"Message": "OK",
"Count": "3724",
"InvoiceRecords": [
{
"InvoiceDate": "8/9/2017 12:00:00 AM",
"InvoiceLocation": "002",
"InvoiceNumber": "2004085",
"InvoiceRecordHeaderDetails": [
{
"InvNum": "2004085",
"Location": "002",
"InvDate": "8/9/2017 12:00:00 AM"
}
],
"InvoiceRecordSplitDetails": [
{
"UniqueID": "1757391",
"InvNum": "2004085",
"Location": "002",
"InvoiceDate": "8/9/2017 12:00:00 AM"
}
],
"InvoiceRecordLineItemDetails": [
{
"UniqueID": "3939934",
"InvNum": "2004085",
"Location": "002",
"InvoiceDate": "8/9/2017 12:00:00 AM"
}
],
"InvoiceTaxCodeDetails": [
{
"InvoiceDate": "8/9/2017 12:00:00 AM",
"Location": "002",
"InvNum": "2004085",
}
]
}
]
}
更新2
@克里斯 - adorna
按照您的指示,(我认为),但碰钉子(帮助?)
// Parse input file data as json
var jsonContent = JSON.parse(fs.readFileSync(inputFile, 'utf8'));
//1. Create 4 empty arrays, one each for record header, splits, line items and tax code details
var recordHeader;
var splits;
var lineItems;
var taxCodes;
//2. Use a forEach function to iterate through InvoiceRecords
var i;
for (i = 0; i < jsonContent.length; i++) {
var record = jsonContent[i].InvoiceRecords;
};
console.log(record);
第2步没有得到在控制台中除'未定义'外的任何内容。 “每个阵列输出到单个JSON文件”,尝试沿着线的东西:
考虑您的问题从字面上看,尤其是这部分
请参阅上面的“更新2”。 – jag959
'var record'在'for'循环中定义。因此,在console.log(record)中''record' ;''将被定义为'undefined',因为你在循环外部调用它。这是JS'范围规则的一部分。在一个相关的不是,'var i'应该在你的括号里面声明,例如'for(var i')。如果不是,'i'将在你的脚本中被全局范围化,你可能会遇到各种各样的副作用 –
另外,你不能以你想要的方式在一个对象上使用标准的'for'循环,它用于数组,这就是为什么我提出'forEach'函数,因为它会遍历一个对象。答案可以帮助你理解'forEach'是如何工作的,你也可以做一个[for(in)loop](https://stackoverflow.com/questions/684672/how-do-i-loop-through-or-enumerate-一个-JavaScript的对象)。 –
当你说你需要那些发生多次作为单独的对象的事情,你的意思是对象作为单独的阵列?此外,它们是否出现多次,意味着每个数组都已经在输入中,或者'InvoiceRecords'是一个数组,因此可以包含多个对象,每个对象都有自己的'InvoiceRecordHeaderDetails'数组? (顺便说一句,[不存在“json对象”](http://benalman.com/news/2010/03/theres-no-such-thing-as-a-json/) ) – nnnnnn
对不起,我很新。 InvoiceRecords数组是各种发票的清单。给定的发票将包含1个标题,1个或多个分组(将付款分摊到付款人),1个或多个行项目(销售多个产品)以及1个或多个税码详细信息(每个行项目的税额) – jag959
我认为您需要以显示期望的输出应该是什么样子,因为从我的言辞中我不清楚。 – jfriend00