我正在尝试将应该是 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
值。
我在这里想念什么?