如何将指定JavaScript数组转换为目标JSON字符串格式?
解决方案
你需要先把数组转换为带有正确数据类型的对象,再将其序列化为JSON字符串,以下是可行代码:
const array = [ { "name": "name", "value": "Olá" }, { "name": "age", "value": "23" }, { "name": "isVisible", "value": "1" } ]; // 构建目标对象并处理数据类型 const targetObj = array.reduce((obj, item) => { let processedValue = item.value; // 处理布尔值转换:"1"转true,"0"转false if (processedValue === "1" || processedValue === "0") { processedValue = processedValue === "1"; } // 处理数字转换:纯数字字符串转为数字类型 else if (!isNaN(processedValue) && processedValue.trim() !== "") { processedValue = Number(processedValue); } // 其他情况保留原字符串 obj[item.name] = processedValue; return obj; }, {}); // 序列化为JSON字符串 const jsonString = JSON.stringify(targetObj); console.log(jsonString); // 输出:{"name":"Olá","age":23,"isVisible":true}
原有代码无效的原因
你用map只是把每个数组元素转成了类似"name:Olá"的字符串,没有将这些键值对合并成一个完整对象,也没有处理数据类型转换(比如把"23"转成数字、"1"转成布尔值),那些替换[]的操作更是多余,因为原数组里根本没有方括号。
代码逻辑说明
- 用
reduce遍历数组,逐步聚合出目标对象,比map更适合这种需要合并结果的场景。 - 先处理布尔值转换(因为"1"同时符合数字字符串的判断,要优先处理),再判断数字字符串转数字,剩下的保持原字符串类型。
JSON.stringify会自动处理引号的转义,直接生成你需要的格式化字符串。
内容的提问来源于stack exchange,提问作者André Castro
相关产品推荐
相关产品推荐

