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

如何补全非标准JSON中非null/空字符串格式的空值使其可解析为对象

需求完全可实现,核心是对非标准原始字符串做预处理后再做解析

问题本质

你拿到的原始字符串不属于可直接解析的合法数据格式,存在两类通用解析器无法识别的语法问题:

  • 所有键、值都缺失语法要求的定界引号,不符合JSON等通用数据格式的解析规则
  • 空值没有合法占位符:一类是对象中间的键值对空值(冒号后直接跟逗号),一类是对象末尾的键值对空值(冒号后直接跟右大括号),这类无有效内容的字段是所有标准数据解析接口都会报错的

具体操作流程

不需要编写复杂的自定义拆分逻辑,靠固定规则的字符串替换,就能把脏数据洗成可正常操作的对象:

  • 给所有空值补统一占位值
    • 针对中间位置的空值:匹配所有「冒号后直接紧跟逗号」的片段,在冒号和逗号之间插入你需要的默认填充值
      比如你需要把空值标记为缺失,就把这类空值替换成null占位
    • 针对末尾位置的空值:匹配所有「冒号后直接紧跟右大括号」的片段,同样插入和上面一致的默认填充值
      替换前后的效果参考:

    原始片段:CO:,OX:,SP:
    处理后片段:CO:null,OX:null,SP:null

  • 把零散的单对象拼接结构补成合法数组结构
    你的原始数据是多个独立对象直接拼接的,只需要保留相邻对象之间的逗号分隔符,再给整个字符串的最外侧套上数组的方括号,就变成了合法的数组片段。
  • 补全键和值的定界引号,转成标准JSON格式
    • 匹配所有冒号前面的固定命名键(包含英文字符、数字、下划线的连续片段),给键加上双引号
    • 除了之前补的null占位值,其他所有值都加上双引号——这么做是因为站点编码SKT_CD是带前导零的固定编码(比如01582030),如果直接按数字解析会自动丢弃前导零,统一存成字符串可以完全保留原始值的内容
      这一步完成后,整个字符串就完全符合JSON语法要求,直接调用编程语言自带的JSON解析接口,就能得到可正常操作的对象结构。

可直接复用的参考实现(JavaScript)

// 读取到的原始脏数据
const rawInput = `{SKT_CD:01582030,SKT_DATE:2021/04/12,SKT_TIME:21,SO2:0,NO:0,NO2:0.002,NOX:0.003,CO:,OX:,NMHC:,CH4:,THC:,SPM:0.008,PM2_5:,SP:},{SKT_CD:01582030,SKT_DATE:2021/04/12,SKT_TIME:22,SO2:0,NO:0,NO2:0.002,NOX:0.002,CO:,OX:,NMHC:,CH4:,THC:,SPM:0.010,PM2_5:,SP:}`;

// 第一步:补全两类空值
let processed = rawInput
  .replace(/:,/g, ":null,") // 补中间位置的空值
  .replace(/:}/g, ":null}") // 补对象末尾的空值
  .replace(/^/, "[")         // 整体包成数组开头
  .replace(/$/, "]");        // 整体包成数组结尾

// 第二步:给所有键加双引号
processed = processed.replace(/([{,]\s*)([A-Za-z0-9_]+):/g, '$1"$2":');

// 第三步:给所有非null的值加双引号,避免解析错误
processed = processed.replace(/:([^,}]+)/g, (match, value) => {
  const trimmedVal = value.trim();
  return trimmedVal === "null" ? match : `:"${trimmedVal}"`;
});

// 直接解析为可操作的对象数组
const cleanData = JSON.parse(processed);

实操注意点

  • 后续如果需要调整空值的填充内容,不需要修改其他逻辑,只需要第一步替换时把null换成你需要的默认值即可(比如空字符串、0、"无数据")
  • 这套规则完全适配你当前拿到的固定结构监测数据:所有键为固定命名、值内部不会出现逗号或特殊符号,不会出现匹配错位的问题
  • 不要直接把原始字符串丢给JSON解析器,缺占位、缺引号的格式一定会触发语法报错,预处理是必须的前置步骤

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 15:45:11