python字典对象和json.loads返回值之间的区别

时间:2018-12-03 11:19:38

标签: python json dictionary

我有一个关于普通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。希望我的问题清楚。

3 个答案:

答案 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      |
+---------------+-----------+