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

使用HJSON解析类JSON数据时仅整数与null可正常解析报错问询

问题根因

你遇到的报错不是漏了配置,是Python的HJSON库对无引号值的解析遵循严格的HJSON规范,具体约束如下:

  • HJSON仅内置识别3种无引号字面量:null、true、false,数值类型(整数、浮点数)也支持无引号写法
  • 其他无引号内容如果要识别为字符串,要么加单/双引号包裹,要么符合「无引号字符串不能与内置关键字冲突、不能包含特殊符号」的规则,你用到的yes、None都不属于内置合法字面量,也没有加引号,因此触发解析错误
  • 报错信息误导是HJSON解码器本身的实现bug:解析值出错时错误将异常定位到键名扫描阶段,和实际问题不符

解决方案

方案1:调整输入格式(可修改输入内容时优先选)

所有非数值、非null/true/false的值都用引号包裹即可正常解析:

import hjson
# 调整后可正常运行
working = hjson.loads('{ date_closed: "yes" }')
print(working) # 输出 OrderedDict([('date_closed', 'yes')])

如果要表示布尔值请用标准的true/false,表示空值用null,不要用yes/no/None等非标准写法。

方案2:更换兼容更强的解析库(无法修改输入内容时用)

如果输入内容无法调整,推荐用demjson3库,它对非标准JSON的兼容性远高于HJSON,无需修改输入即可正常解析:

import demjson3

# 解析你给出的异常示例均正常运行
print(demjson3.decode('{ date_closed: yes }')) # 输出 {'date_closed': 'yes'}
print(demjson3.decode('{ date_opened: None }')) # 输出 {'date_opened': None}

安装命令:pip install demjson3

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 17:27:00