为什么在馈给json.dumps()的Python对象中不能使用true / false / null?


问题内容
  • 我正在尝试解码(我认为这是正确的词)JSON将python的true,false,null转换为True,False,None
  • 我知道我需要json图书馆

  • 我遵循了该线程的答案,但并没有带我任何地方。

  • 我仍然收到相同的错误: NameError: name 'true' is not defined

import json

raw_json = {
'a':'aa',
'b':'bb',
'c':'cc',
'd':true,
'e':false,
'f':null
}

json_dump = json.dumps(raw_json)
json_load = json.loads(json_dump)

我在做什么错/需要做什么?

另外,我来自javascript背景,因此尝试学习约定和术语一直很痛苦。在u之前,u在其他线程的链接中的每个json键之前是什么?


问题答案:

您可以将原始JSON嵌入到代码中(如果您将其嵌入到字符串中)(如果您正在使用良好的做法从磁盘或网络中读取数据,则无论如何都可以将其嵌入):

# similar to what you'd get from raw_json=open('in.json', 'r').read()
raw_json = '''{
'a':'aa',
'b':'bb',
'c':'cc',
'd':true,
'e':false,
'f':null
}'''

python_struct = json.loads(raw_json)
json_again = json.dumps(raw_json)

因为truefalse并且null是该字符串的所有内,解析器不会尝试读取它们作为有效的Python,所以json.loads()能够看到他们,因为他们最初写的。