Mule 4:将键值对转换为含独立键值元素的对象
解决JSON键值对转key-value对象数组的问题
需求说明
将输入JSON中data数组内的对象,转换为每个元素都包含独立key(原属性名)和value(原属性值转字符串)的对象数组。
输入示例
{ "data": [ { "Amount": 20, "CostPrice": 50, "SellingPrice": 100, "FinalPrice": 120, "Quantity": 2, "Tax": 21.6 } ] }
输出示例
{ "data": [ { "key": "Amount", "value": "20" }, { "key": "CostPrice", "value": "50" }, { "key": "SellingPrice", "value": "100" }, { "key": "FinalPrice", "value": "120" }, { "key": "Quantity", "value": "2" }, { "key": "Tax", "value": "21.6" } ] }
JavaScript实现方案
以下是直接可运行的代码,实现从输入到输出的转换:
// 输入JSON字符串 const inputJson = `{ "data": [ { "Amount": 20, "CostPrice": 50, "SellingPrice": 100, "FinalPrice": 120, "Quantity": 2, "Tax": 21.6 } ] }`; // 解析为JavaScript对象 const inputObj = JSON.parse(inputJson); // 核心转换逻辑:遍历原对象的键值对,生成目标格式的对象数组 const transformedData = Object.entries(inputObj.data[0]).map(([key, value]) => ({ key, value: String(value) // 将数值转为字符串,匹配输出要求 })); // 构建最终输出对象 const outputObj = { data: transformedData }; // 转换为带缩进的JSON字符串 const outputJson = JSON.stringify(outputObj, null, 4); // 打印结果 console.log(outputJson);
代码说明
Object.entries(inputObj.data[0]):将原对象转换为[键, 值]格式的数组,方便遍历。map()方法:遍历每一组键值对,生成包含key和value的新对象。String(value):确保所有数值类型的属性值转为字符串,与输出示例的格式一致。JSON.stringify(outputObj, null, 4):将最终对象转换为带4空格缩进的格式化JSON字符串,提升可读性。
内容的提问来源于stack exchange,提问作者Kunal Awasthi
相关产品推荐
相关产品推荐

