【发布时间】:2021-11-26 21:55:14
【问题描述】:
我正在尝试将应该是 JSON 的内容解析为 Python 字典。但是,我正在使用的 JSON 文件不是有效的 JSON,因为键值对周围经常会缺少引号。
HJSON 似乎是我正在寻找的东西,但是如果我尝试传递除 null 或任何整数以外的任何值,我会发现它错误。
使用一些我必须使用的“JSON”值来玩弄它:
import hjson
# EXAMPLE 1
working = hjson.loads('{ date_closed: null }') # <- THIS WORKS!
print(working)
OrderedDict([('date_closed', None)])
# EXAMPLE 2
works_too = hjson.loads('{ date_closed: 42 }') # <- THIS WORKS!
print(works_too)
OrderedDict([('date_closed', 42)])
# EXAMPLE 3
not_working = hjson.loads('{ date_closed: yes }') # <- ERRORS!
~/hjson/decoder.py in scanKeyName(s, end, encoding, strict)
278
279 if ch == '':
--> 280 raise HjsonDecodeError("Bad key name (eof)", s, end);
281 elif ch == ':':
282 if begin == end:
HjsonDecodeError: Bad key name (eof): line 1 column 21 (char 20)
# EXAMPLE 4
# Using different key name
also_not_working = hjson.loads('{ date_opened: yes }') # <- ERRORS with identical error message as above
# Different value name, showing it's not a 'key' error but a 'value' error
this_works = hjson.loads('{ date_opened: null }') # <- THIS WORKS!
print(this_works)
OrderedDict([('date_opened', None)])
# EXAMPLE 5
doesnt_work = hjson.loads('{ date_opened: None }') # <- ERRORS with identical error message as above
-
错误消息似乎不正确。有问题的不是
key name(因为同一个键有时会起作用),而是value name。 -
似乎能够被 HJSON 解析的唯一值是整数(值
42有效)和null值。
我在这里错过了什么?
【问题讨论】:
标签: python json dictionary hjson