JavaScript如何从嵌套JSON数组中通过for循环获取AccountNo、InvoiceAmount值
JavaScript提取目标字段实现方案
你给出的JSON数组中,每个元素的Billinfo字段为序列化后的JSON字符串,需要先反序列化再通过for循环提取字段,具体实现如下:
完整代码示例
// 源JSON数组,替换为你实际的数据源即可 const sourceArr = [ { "Billinfo": "{\"BillInfo\":[{\"Accountno\":3,\"BillCycleNo\":1,\"Bill StartDate\":\"28-May-2021 00:00:00\",\"Bill EndDate\":\"14-Jun-2021 00:00:00\",\"Previous Bill StartDate\":\"28-May-2021 00:00:00\",\"Previous Bill EndDate\":\"14-Jun-2021 00:00:00\",\"InvoiceNo\":\"INV00000001000000000320210621175559\",\"InvoiceId\":\"210600000011\",\"SubscriberType\":\"ADVANCEPAID\",\"DueDate\":null,\"InvoiceAmount\":0.0,\"BillLines\":null,\"PenaltyCalculation\":null,\"InvoiceLevelCalculation\":null,\"InvoiceSummary\":null}]}" }, { "Billinfo": "{\"BillInfo\":[{\"Accountno\":3,\"BillCycleNo\":2,\"Bill StartDate\":\"15-Jun-2021 00:00:00\",\"Bill EndDate\":\"14-Jul-2021 00:00:00\",\"Previous Bill StartDate\":\"28-May-2021 00:00:00\",\"Previous Bill EndDate\":\"14-Jun-2021 00:00:00\",\"InvoiceNo\":\"INV00000002000000000320210621181409\",\"InvoiceId\":\"210600000015\",\"SubscriberType\":\"ADVANCEPAID\",\"DueDate\":null,\"InvoiceAmount\":0.0,\"BillLines\":null,\"PenaltyCalculation\":null,\"InvoiceLevelCalculation\":null,\"InvoiceSummary\":null}]}" } ]; // 存储提取结果的数组 const result = []; // 普通for循环遍历数据源 for (let i = 0; i < sourceArr.length; i++) { // 反序列化Billinfo字符串为JS对象 const parsedBillInfo = JSON.parse(sourceArr[i].Billinfo); // 取BillInfo数组内的账单对象 const billItem = parsedBillInfo.BillInfo[0]; // 提取目标字段存入结果 result.push({ AccountNo: billItem.Accountno, InvoiceAmount: billItem.InvoiceAmount }); } // 输出提取结果 console.log(result);
注意事项
- 源数据中账号字段的原始命名为
Accountno(末尾n为小写),代码中已对齐你需求的AccountNo命名格式,可根据实际需求调整 - 如果实际场景中
BillInfo数组可能存在多条账单数据,新增一层for循环遍历parsedBillInfo.BillInfo即可
内容的提问来源于stack exchange,提问作者Abjava
相关产品推荐
相关产品推荐

