You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 20:24:53