我有一个关于普通Python字典对象与json.loads(str)输出返回的内容之间的区别的问题。根据检查两个对象的type(),它表示为dict。但是我想确认一下json.load()是否实际上返回普通字典或字典格式的json对象。 我的代码如下:
/*Not Working*/
@media (max-inline-size:1000px){
.main-content{
background:Red;
grid-template-columns:auto;
}
}
输出说:两者都为“ dict”类
但是要提一下,我想确认两者是否完全相同,因为我需要发送回JSON响应,并且如果两者完全相同,则先使用json.dumps将其转换为字符串是没有意义的( ),然后再次对其执行json.loads()。我最好返回我创建的字典对象my_dict。希望我的问题清楚。
答案 0 :(得分:2)
两者均为dict
类型,但它们不是同一本词典,也不一定完全相同。
例如,json将包含unicode字符串。在python 2中,my_dict
不会(它将为str类型)。在这种情况下,my_dict['key1']
与resp_json['key1']
并不完全相同。
顺便说一句,对于大多数pythonic来说,这种区别不重要,您可能会认为它们是相同的。不过,请务必记住可能存在的差异,并考虑是否要处理重要的极端情况。
答案 1 :(得分:0)
验证/检查python对象类型的首选方法是isintance()
isinstance(resp_json, type(my_dict))
但是我怀疑这里的误解是另一个。
正如我在评论中指出的那样,如果传递了表示语法正确的JSON的字符串,则json.loads()
将返回一个字典。因此,类型dict
是正确的,因为这是python内置的,它以类似于JS / JSON的方式表示键值信息。
如果您想知道它们是否是同一对象,即存储在内存中的同一位置,则可以使用
resp_json is my_dict
从您的问题来看,但是我怀疑您真正感兴趣的是内容的等效性。
resp_json == mydict
应该给你这个。我真的无法想象会发生什么其他情况。
答案 2 :(得分:-2)
json模块使用此转换表
https://docs.python.org/2/library/json.html#json-to-py-table
+---------------+-----------+
| JSON | Python |
+---------------+-----------+
| object | dict |
| array | list |
| string | unicode |
| number (int) | int, long |
| number (real) | float |
| true | True |
| false | False |
| null | None |
+---------------+-----------+