如何在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
相关产品推荐
相关产品推荐

