为什么可以';我在馈送到json.dumps()的Python对象中使用true/false/null吗? 我正在尝试解码(我认为这是正确的词)JSON,以便为python将true、false、null转换为true、false、None
我知道我需要为什么可以';我在馈送到json.dumps()的Python对象中使用true/false/null吗? 我正在尝试解码(我认为这是正确的词)JSON,以便为python将true、false、null转换为true、false、None,python,json,Python,Json,我知道我需要json库 我跟着走了,但没走到哪儿 我仍然收到相同的错误: name错误:未定义名称“true” 我做错了什么/需要做什么 另外,我来自javascript背景,因此学习约定和术语是一件痛苦的事情。在“d2”之后的另一个线程的链接中,“u”在每个json键前加了什么?在Python中,您需要True、False和None raw_json = { 'a':'aa', 'b':'bb', 'c':'cc', 'd': True, 'e':
json
库
name错误:未定义名称“true”
另外,我来自javascript背景,因此学习约定和术语是一件痛苦的事情。在“d2”之后的另一个线程的链接中,“u”在每个json键前加了什么?在Python中,您需要
True
、False
和None
raw_json = {
'a':'aa',
'b':'bb',
'c':'cc',
'd': True,
'e': False,
'f': None
}
在JSON变量
raw_JSON
中,需要大写True
和False
。在Python中,布尔值被大写为true和false。当您将其序列化为JSON时,它们的大小写将降低。另外,None
是Python中的null
的等价物
当您执行JSON转储时,您将接收一个Python字典(必须是有效的Python)并输出一个遵循JSON标准的字符串。转换将大写的True、False和None直观地更改为JSON等价物True、False和null
要回答为什么字符串上有
u
s,这是指字符串是Unicode字符串 如果将原始JSON嵌入到字符串中,则可以将其嵌入到代码中(如果您使用良好的实践从磁盘或网络读取数据,无论如何,这就是您所拥有的):
因为
true
、false
和null
都在字符串中,解析器不会尝试将它们作为有效的Python来读取,所以json.loads()
能够看到它们最初编写时的样子。迟来获得答案,但我的观点是:您可以将原始json编写为:
raw_json = {
'a':'aa',
'b':'bb',
'c':'cc',
'd':bool(1),
'e':bool(0),
'f':None
}
“None”相当于null。布尔函数有助于为您创建“true”和“false”的标识符。
true
不是Python的有效标识符true
对Javascript有效,对于Python它是true
raw_json
实际上不是json;它只是一个Pythondict
对象json_dump
将是json(符合ECMA-404的文本字符串,表示数据结构)json\u load
是由json\u dump
表示的Python对象。由于馈送到dumps
的对象需要是有效的Python对象,因此需要用Python语言描述它,因此使用True
vsTrue
。如果您希望能够用JSON而不是Python编写内容,那么您需要将其放入字符串中,并使用loads()
解析该字符串。@HanniAbu,是的,但它将true
作为传递给loads()
的字符串的一部分;它不能用作Python文本…也就是说:raw_json=open('in.json','r')。read()
不会产生与您在这里的示例代码相同的行为,即使in.json
的内容与您在问题中给出的内容完全匹配。我知道,但据我所知,json库可以为我做到这一点,不是吗?它可以,但你走错了方向true
作为JSON对象中的一个不带引号的关键字,可以通过JSON进行转换。将
加载到Python文本true
。因此它只能执行关键字而不能执行值?在下面的示例中,可以转换值。如果正在转换,则为“是”。但转换后的表单不再是Python,而是字符串。
# 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)
raw_json = {
'a':'aa',
'b':'bb',
'c':'cc',
'd':bool(1),
'e':bool(0),
'f':None
}