如何在JavaScript中将数组转换为指定结构的JSON对象?
问题:二维数组转指定结构JSON对象
原始二维数组:
const data = [ ["Lisa", "Heinz", "1993-04-15" ], ["Bob", "Dylan", "1998-09-12"], ["Cabbage", "Man", "1990-01-11"], ["", "", ""] ];
目标JSON结构:
{ "person": [ {"name":"Lisa","last_name":"Heinz","dob":"1993-04-15"}, {"name":"Bob","last_name":"Dylan","dob":"1998-09-12"}, {"name":"Cabbage","last_name":"Man","dob":"1990-01-11"}, {"name":"","last_name":"","dob":""} ], "object_id":259, "test":"bob", "attribute":"bob123" }
当前代码的问题是把每个person处理成了对象的独立属性(person0、person1这类),但目标结构里person是一个数组,需要装下所有人员对象。下面是两种易懂的实现方式:
方式一:使用map方法(简洁高效)
const data = [ ["Lisa", "Heinz", "1993-04-15" ], ["Bob", "Dylan", "1998-09-12"], ["Cabbage", "Man", "1990-01-11"], ["", "", ""] ]; // 先构建固定属性部分 const result = { object_id: 259, test: "bob", attribute: "bob123" }; // 用map遍历数组,把每个子数组转成person对象,直接生成数组 result.person = data.map(item => ({ name: item[0], last_name: item[1], dob: item[2] })); // 转成JSON字符串(发送API时用) const jsonResult = JSON.stringify(result); console.log(jsonResult);
方式二:使用普通for循环(直观易懂)
const data = [ ["Lisa", "Heinz", "1993-04-15" ], ["Bob", "Dylan", "1998-09-12"], ["Cabbage", "Man", "1990-01-11"], ["", "", ""] ]; // 初始化结果对象,提前创建person空数组 const result = { object_id: 259, test: "bob", attribute: "bob123", person: [] }; // 遍历二维数组,逐个把人员信息转成对象push到person数组里 for (let i = 0; i < data.length; i++) { const personInfo = data[i]; result.person.push({ name: personInfo[0], last_name: personInfo[1], dob: personInfo[2] }); } const jsonResult = JSON.stringify(result); console.log(jsonResult);
两种方式核心逻辑一致:把所有person对象收集到一个数组中,再赋值给result.person属性,就能匹配目标结构。
内容的提问来源于stack exchange,提问作者Tim Dobson
相关产品推荐
相关产品推荐

