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

如何将指定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"转成布尔值),那些替换[]的操作更是多余,因为原数组里根本没有方括号。

代码逻辑说明

  1. 用reduce遍历数组,逐步聚合出目标对象,比map更适合这种需要合并结果的场景。
  2. 先处理布尔值转换(因为"1"同时符合数字字符串的判断,要优先处理),再判断数字字符串转数字,剩下的保持原字符串类型。
  3. JSON.stringify会自动处理引号的转义,直接生成你需要的格式化字符串。

内容的提问来源于stack exchange,提问作者André Castro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 11:45:33