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

如何在JavaScript中创建JSON数据及转换指定数组为目标JSON结构

嘿,我来帮你搞定这两个JavaScript相关的问题!

1. 如何在JavaScript中创建JSON数据?

其实JSON本质是一种字符串格式的文本,用来存储和传输数据。在JavaScript里,我们通常先创建对应的JS对象或数组,再通过JSON.stringify()方法把它转换成标准的JSON字符串。

举个简单的例子:

// 先创建一个普通的JavaScript对象
const userProfile = {
  username: "Luna",
  age: 28,
  isVerified: true,
  interests: ["hiking", "photography", "coding"]
};

// 把JS对象转换成JSON字符串
const jsonUserData = JSON.stringify(userProfile);
console.log(jsonUserData);
// 输出结果:{"username":"Luna","age":28,"isVerified":true,"interests":["hiking","photography","coding"]}

如果你想直接写JSON字符串也可以,但要注意必须用双引号包裹键和字符串值,比如:

const directJsonStr = '{"product":"Laptop","price":999.99,"inStock":true}';

不过更推荐先创建JS对象再转换,这样修改和维护起来更灵活。

2. 将指定数组转换为目标JSON格式

看你给出的输入数组,是一组扁平的键值对,要把它整理成带MainData结构的JSON,核心是按TransSequence分组,把同一序列下的接收者信息整合到一起。我给你写一段实用的代码,附详细思路:

首先是你的输入数组:

const inputArray = [
  { name: "ReceiverId", value: "1" },
  { name: "TransSequence", value: "KPJ7dL2pmx0njInNRAzUug" },
  { name: "email-address", value: "xcv@cvb.com" },
  { name: "mobile-number", value: "9321313213" },
  { name: "ReceiverId", value: "2" },
  { name: "TransSequence", value: "KPJ7dL2pmx0njInNRAzUug" },
  { name: "email-address", value: "xcv@cvb.com" }
];

然后是转换代码:

// 第一步:把扁平的键值对转换成完整的接收者对象列表
const receiverList = [];
let currentReceiver = {};

inputArray.forEach(item => {
  const { name, value } = item;
  // 给当前接收者添加字段
  currentReceiver[name] = value;

  // 当遇到新的ReceiverId时,说明上一个接收者的字段收集完毕,存入列表并重置
  if (name === "ReceiverId" && Object.keys(currentReceiver).length > 1) {
    receiverList.push({ ...currentReceiver });
    currentReceiver = { [name]: value };
  }
});
// 别忘了把最后一个接收者加入列表
receiverList.push(currentReceiver);

// 第二步:按TransSequence分组,生成MainData结构
const groupedData = {};
receiverList.forEach(receiver => {
  const transSeq = receiver.TransSequence;
  // 如果该序列还没在分组里,先初始化
  if (!groupedData[transSeq]) {
    groupedData[transSeq] = {
      TransSequence: transSeq,
      Receivers: []
    };
  }
  // 提取接收者的具体信息(去掉重复的TransSequence)
  const { TransSequence, ...receiverInfo } = receiver;
  groupedData[transSeq].Receivers.push(receiverInfo);
});

// 最后包装成目标格式
const finalResult = {
  MainData: Object.values(groupedData)
};

// 打印结果看看
console.log(JSON.stringify(finalResult, null, 2));

运行这段代码后,你会得到这样的输出:

{
  "MainData": [
    {
      "TransSequence": "KPJ7dL2pmx0njInNRAzUug",
      "Receivers": [
        {
          "ReceiverId": "1",
          "email-address": "xcv@cvb.com",
          "mobile-number": "9321313213"
        },
        {
          "ReceiverId": "2",
          "email-address": "xcv@cvb.com"
        }
      ]
    }
  ]
}

简单说下思路:先把零散的键值对拼成每个接收者的完整对象,再按交易序列分组,最后把分组结果放进MainData数组里,完美匹配你想要的结构~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:52:27