如何在JavaScript中将JSON列转换为JSON行?
如何将JSON列转换为JSON行?
需求说明
需要将原始JSON中每个对象里的成本中心字段(HeadOffice、Marketing、Sales、Accounting)拆分为单独的行,每行保留账户编码、账户名称,同时新增costCenter和amount字段。
原始数据
[ { "accountCode": "01", "accountName": "Cash on Hand", "HeadOffice": "100", "Marketing": "200", "Sales": "300", "Accounting": "400" }, { "accountCode": "02", "accountName": "Cash in Bank", "HeadOffice": "150", "Marketing": "250", "Sales": "350", "Accounting": "450" }, { "accountCode": "03", "accountName": "Loans", "HeadOffice": "250", "Marketing": "350", "Sales": "450", "Accounting": "450" }, { "accountCode": "04", "accountName": "Advances", "HeadOffice": "150", "Marketing": "250", "Sales": "350", "Accounting": "450" } ]
目标数据
[ { "AccountCode": "01", "accountName": "Cash on Hand", "costCenter": "HeadOffice", "amount": "100" }, { "AccountCode": "01", "accountName": "Cash on Hand", "costCenter": "Marketing", "amount": "200" }, { "AccountCode": "01", "accountName": "Cash on Hand", "costCenter": "Sales", "amount": "300" }, { "AccountCode": "01", "accountName": "Cash on Hand", "costCenter": "Accounting", "amount": "400" }, { "AccountCode": "02", "accountName": "Cash in Bank", "costCenter": "HeadOffice", "amount": "150" }, { "AccountCode": "02", "accountName": "Cash in Bank", "costCenter": "Marketing", "amount": "250" }, { "AccountCode": "02", "accountName": "Cash in Bank", "costCenter": "Sales", "amount": "350" }, { "AccountCode": "02", "accountName": "Cash in Bank", "costCenter": "Accounting", "amount": "450" }, { "AccountCode": "03", "accountName": "Loans", "costCenter": "HeadOffice", "amount": "250" }, { "AccountCode": "03", "accountName": "Loans", "costCenter": "Marketing", "amount": "350" }, { "AccountCode": "03", "accountName": "Loans", "costCenter": "Sales", "amount": "450" }, { "AccountCode": "03", "accountName": "Loans", "costCenter": "Accounting", "amount": "450" }, { "AccountCode": "04", "accountName": "Advances", "costCenter": "HeadOffice", "amount": "150" }, { "AccountCode": "04", "accountName": "Advances", "costCenter": "Marketing", "amount": "250" }, { "AccountCode": "04", "accountName": "Advances", "costCenter": "Sales", "amount": "350" }, { "AccountCode": "04", "accountName": "Advances", "costCenter": "Accounting", "amount": "450" } ]
实现方法(JavaScript)
通过遍历原始数据,提取固定字段后拆分成本中心字段,生成目标结构的数组:
const originalData = [ { "accountCode": "01", "accountName": "Cash on Hand", "HeadOffice": "100", "Marketing": "200", "Sales": "300", "Accounting": "400" }, { "accountCode": "02", "accountName": "Cash in Bank", "HeadOffice": "150", "Marketing": "250", "Sales": "350", "Accounting": "450" }, { "accountCode": "03", "accountName": "Loans", "HeadOffice": "250", "Marketing": "350", "Sales": "450", "Accounting": "450" }, { "accountCode": "04", "accountName": "Advances", "HeadOffice": "150", "Marketing": "250", "Sales": "350", "Accounting": "450" } ]; const result = []; // 定义需要拆分的成本中心字段集合 const costCenters = ["HeadOffice", "Marketing", "Sales", "Accounting"]; originalData.forEach(item => { const { accountCode, accountName } = item; costCenters.forEach(center => { result.push({ AccountCode: accountCode, // 匹配目标数据的字段名大小写 accountName, costCenter: center, amount: item[center] }); }); }); // 输出转换后的结果 console.log(JSON.stringify(result, null, 2));
关键说明
- 提前定义成本中心字段列表,避免遗漏或错误处理字段
- 遍历原始数据的每个对象,提取固定的
accountCode和accountName - 对每个成本中心字段,生成符合目标结构的新对象并加入结果数组
- 注意目标数据中
accountCode被转换为大写开头的AccountCode,代码中已适配该细节
内容的提问来源于stack exchange,提问作者user23629528
相关产品推荐
相关产品推荐

