【发布时间】:2018-05-18 20:02:06
【问题描述】:
str(a dictionary) 和json.dumps(a dictionary) 的输出有什么区别?如果我打印它们,它们看起来是一样的。它们的属性(根据dir)似乎也相同(见下文)。但我知道肯定有区别。能给我解释一下吗?
import json
aDictionary= {"first": 42, "second":21}
s = str(aDictionary)
j = json.dumps(aDictionary)
s == j # returns false
dir(s) == dir(j) # returns true
【问题讨论】:
-
str(dict)不会生成有效的 JSON。 -
感谢您的评论。是的,我经历过,但我想更好地了解两个看起来非常相似的事物之间的区别。
-
不要使用
dict作为变量名。如果您打印结果,您会看到差异;来自str:"{'first': 42, 'second': 21}"和来自 json:'{"first": 42, "second": 21}'。注意键的字符串周围的双引号。 -
Of course
dir()返回相同的属性和方法列表。s和j都是字符串。这并没有说明 这些字符串的内容。 -
s == j # 返回 false,因为在由字符组成的字符串中,两者都是字符串,但逗号序列不同。来自str:“{'first':42,'second':21}”和来自json:'{“first”:42,“second”:21}'。看到逗号序列在两者中都不同,所以很明显比较会带来错误。因为两个字符串只有在对应的地方有匹配的字符时才需要相等。
标签: python json dictionary