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

如何将指定JavaScript字符串数组转换为目标JSON对象

解决JavaScript数组转目标JSON结构的方案

嘿,这个转换需求很清晰,我们可以通过遍历原数组,逐步构建目标对象来实现。下面是具体的思路和代码实现:

实现思路

  1. 先初始化最终结果容器(一个包含单个对象的数组),以及用于临时存储当前客人信息的变量;
  2. 遍历原数组的每一项:
    • 若当前项包含=,说明是键值对,分割并处理掉前后空格后,判断是全局属性(Id、time、Topic)还是客人的子属性(Role、Infos),分别添加到对应位置;
    • 若当前项是GUEST开头的字符串,说明是新的客人节点,先把之前的客人信息(如果存在)挂载到主对象,再初始化新的客人键和子对象;
  3. 遍历结束后,记得把最后一个客人的信息也挂载到主对象,确保没有遗漏。

代码实现

const data = [ "Id = 2", "time = 10:59", "Topic = xxxxxxxxxxxxxxxx", "GUEST3", "Role = GS", "Infos = Connecticut", "GUEST4", "Role = HS", "Infos = Delaware", "GUEST5", "Role = CS", "Infos = Hawaii" ];

// 初始化结果数组和主对象
const result = [{}];
const mainObj = result[0];
let currentGuestKey = null;
let currentGuestObj = null;

data.forEach(item => {
  if (item.includes('=')) {
    // 处理键值对,分割并去除前后空格
    const [key, value] = item.split('=').map(str => str.trim());
    // 判断是全局属性还是客人的子属性
    if (['Id', 'time', 'Topic'].includes(key)) {
      // 全局属性直接加到主对象,Id转成数字类型
      mainObj[key] = key === 'Id' ? Number(value) : value;
    } else if (currentGuestKey && currentGuestObj) {
      // 客人的子属性加到当前客人对象
      currentGuestObj[key] = value;
    }
  } else if (item.startsWith('GUEST')) {
    // 如果之前有未完成的客人对象,先加到主对象
    if (currentGuestKey && currentGuestObj) {
      mainObj[currentGuestKey] = currentGuestObj;
    }
    // 初始化新的客人键和对象
    currentGuestKey = item;
    currentGuestObj = {};
  }
});

// 处理最后一个客人对象
if (currentGuestKey && currentGuestObj) {
  mainObj[currentGuestKey] = currentGuestObj;
}

console.log(JSON.stringify(result, null, 2));

输出结果

运行上面的代码后,你会得到完全符合需求的结构:

[
  {
    "Id": 2,
    "time": "10:59",
    "Topic": "xxxxxxxxxxxxxxxx",
    "GUEST3": {
      "Role": "GS",
      "Infos": "Connecticut"
    },
    "GUEST4": {
      "Role": "HS",
      "Infos": "Delaware"
    },
    "GUEST5": {
      "Role": "CS",
      "Infos": "Hawaii"
    }
  }
]

这里需要注意的点:

  • 我们把Id转换成了数字类型,如果你需要它保持字符串,去掉Number(value)即可;
  • 代码里通过startsWith('GUEST')判断客人节点,即使后面的数字变化也能兼容;
  • 遍历结束后一定要处理最后一个客人对象,否则会遗漏。

内容的提问来源于stack exchange,提问作者mamesaye

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:06:53