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

如何将无效JSON payload转换为规范的目标JSON格式?

解决无效JSON转换为目标格式的方法

第一步:修复原始无效JSON的语法问题

原始JSON存在两处语法错误,必须先修正才能处理:

  • Name字段的值Project123缺少双引号,需改为"Name": "Project123"
  • 存在多个独立顶级JSON对象,不符合JSON单顶级值的规则,需要用数组包裹这些对象。修复后的临时可解析JSON如下:
[
  {
    "Name": "Project123",
    "time": "2023-10-04T09:54:29.461Z",
    "data": {
      "ALAM": [
        {
          "CLEARINGLINEITEM": "000001",
          "BURP": [
            {
              "CLAIMNO": "52798",
              "SYSTEM": "Test123"
            }
          ]
        }
      ]
    }
  },
  {
    "ALAM": [
      {
        "CLEARINGLINEITEM": "000002",
        "BURP": [
          {
            "CLAIMNO": "52798",
            "SYSTEM": "Test1234"
          }
        ]
      }
    ]
  }
]

第二步:提取数据并重组为目标格式

核心逻辑是收集所有ALAM数组内的对象,将它们统一放入data.ACDOCA数组,同时保留第一个对象中的Name和time字段。

代码实现示例(JavaScript)

// 假设修复后的临时JSON已解析为数组tempData
const tempData = [
  {
    "Name": "Project123",
    "time": "2023-10-04T09:54:29.461Z",
    "data": {
      "ALAM": [{"CLEARINGLINEITEM": "000001", "BURP": [{"CLAIMNO": "52798", "SYSTEM": "Test123"}]}]
    }
  },
  {"ALAM": [{"CLEARINGLINEITEM": "000002", "BURP": [{"CLAIMNO": "52798", "SYSTEM": "Test1234"}]}]}
];

// 收集所有ALAM中的对象
const acdocaItems = [];
tempData.forEach(item => {
  if (item.data?.ALAM) {
    acdocaItems.push(...item.data.ALAM);
  } else if (item.ALAM) {
    acdocaItems.push(...item.ALAM);
  }
});

// 构建目标JSON结构
const result = {
  Name: tempData[0].Name,
  time: tempData[0].time,
  data: {
    ACDOCA: acdocaItems
  }
};

console.log(JSON.stringify(result, null, 2));

运行后即可得到你期望的格式:

{
  "Name": "Project123",
  "time": "2023-10-04T09:54:29.461Z",
  "data": {
    "ACDOCA": [
      {
        "CLEARINGLINEITEM": "000001",
        "BURP": [
          {
            "CLAIMNO": "52798",
            "SYSTEM": "Test123"
          }
        ]
      },
      {
        "CLEARINGLINEITEM": "000002",
        "BURP": [
          {
            "CLAIMNO": "52798",
            "SYSTEM": "Test1234"
          }
        ]
      }
    ]
  }
}

手动转换步骤(无需代码)

  1. 给Project123添加双引号,补全Name字段的语法;
  2. 用[]包裹所有顶级对象,将其转换为数组;
  3. 从第一个对象中复制Name和time字段;
  4. 逐个提取每个对象里ALAM数组的元素,将这些元素全部放入ACDOCA数组;
  5. 组合成目标结构即可。

内容的提问来源于stack exchange,提问作者TwinZaia

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 12:33:12