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

如何移除损坏嵌套JSON值中包裹嵌套结构的多余双引号?

修复嵌套JSON字段被多余双引号包裹的问题

问题表现

损坏的JSON中origin字段存储的数组被外层额外双引号包裹,整体成为字符串值,无法被JSON解析器识别为嵌套数组结构:
损坏的JSON片段:

{
  "type" : "fruitList",
  "data" : [{
    "fruitName" : "test",
    "origin" : "[{"states" : "USA"}]"
  }]
}

需要修复为标准嵌套结构:

{
  "type" : "fruitList",
  "data" : [{
    "fruitName" : "test",
    "origin" : [{"states" : "USA"}]
  }]
}

实现方法

使用精准匹配字段的正则做替换即可,不需要改动其他正常字段的内容,以JavaScript环境为例,代码如下:

// 待修复的损坏JSON字符串
const brokenStr = `{
  "type" : "fruitList",
  "data" : [{
    "fruitName" : "test",
    "origin" : "[{"states" : "USA"}]"
  }]
}`

// 正则替换移除origin字段值外层多余的双引号
const fixedStr = brokenStr.replace(/"origin"\s*:\s*"(\[[\s\S]*?\])"/g, '"origin": $1')

// 验证解析结果
const validJson = JSON.parse(fixedStr)

替换后可以直接通过JSON.parse正常解析,validJson.data[0].origin会直接返回标准数组类型[{"states": "USA"}]。

正则规则说明

  • "origin"\s*:\s*":精准匹配origin字段名、冒号、字段值前的多余开头双引号,\s*兼容键值之间任意数量的空格,适配不同排版的JSON
  • (\[[\s\S]*?\]):捕获组,非贪婪匹配从[开始到对应]结束的完整数组内容,支持数组内嵌套多个对象、多个字段的场景,不会跨字段误匹配
  • 末尾的":匹配数组闭合方括号后的多余结尾双引号
  • g修饰符:支持批量修复整个JSON中所有同类型错误,不管数据列表里有多少条记录带该问题都能一次性处理

兼容扩展

如果数组内容中存在转义双引号、中文、特殊字符,上面的正则依然可以正常匹配;如果还有其他字段存在同类「数组/对象被引号包裹成字符串」的问题,只需要把正则里的origin替换成对应字段名即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 07:51:19