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

如何用Node.js将S3中的类JSON文件转换为记录列表?

解决首尾相接JSON对象的解析问题

你的思路方向是对的,但直接用split('}{')会导致首尾两个JSON格式不完整:第一个缺结尾的},最后一个缺开头的{,中间元素则同时缺失首尾符号。只需对拆分后的结果做针对性补全,就能得到可正常解析的JSON字符串列表,具体实现如下:

完整代码示例

// raw 是从AWS S3获取的原始无换行JSON拼接字符串
const jsonSegments = raw.split('}{');

// 修复每个片段的JSON格式,兼容单条/多条JSON的情况
const validJsonStrings = jsonSegments.map((segment, idx, arr) => {
  // 如果只有单条JSON,直接返回原片段
  if (arr.length === 1) {
    return segment;
  }
  // 第一条补结尾的}
  if (idx === 0) {
    return segment + '}';
  }
  // 最后一条补开头的{
  if (idx === arr.length - 1) {
    return '{' + segment;
  }
  // 中间的片段同时补首尾符号
  return '{' + segment + '}';
});

// 解析JSON并遍历执行操作
try {
  const jsonObjects = validJsonStrings.map(str => JSON.parse(str));
  jsonObjects.forEach(obj => {
    // 替换为你需要执行的业务逻辑
    console.log('处理记录:', obj.name);
  });
} catch (error) {
  console.error('JSON解析失败,请检查原始数据格式:', error);
}

注意事项

  • 如果原始字符串中存在嵌套JSON(比如示例里的phone对象),该方法依然有效,因为拆分仅针对顶层的}{拼接符,不会影响嵌套结构内的符号。
  • 若原始数据存在无关空格(比如JSON对象之间的空格),可先通过raw = raw.replace(/\s+/g, '')去除,但需注意:如果JSON字符串值内包含空格,全局替换会破坏数据,此时建议保留原始空格再执行拆分补全操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 16:42:37