我们在学习python中,会发现,里面的字典和js里json对象特别像,那单单对于python而言,他们到底一样吗?

首先结论:两者不一样

区别

  1. Python的dict是一种数据结构,JSON是一种数据格式。

  2. dictkey可以是任意可hash对象,json只能是字符串。{(1,2):1} 在python里是合法的,因为tuplehashable type

                {[1,2]:1} 在python里TypeError: unhashable "list"

  3. 形式上有些相像,但json是纯文本的,无法直接操作。

  4. dict字符串用单引号,json强制规定双引号。

  5. dict里可以嵌套tuplejson里只有array。 json.dumps({1:2}) 的结果是 {"1":2}json.dumps((1,2)) 的结果是[1,2]

  6. json: true|false|null ; dict:True|False|None

联系

dict 存在于内存中,可以被序列化成 json 格式的数据(string),之后这些数据就可以传输或者存储了。

总结

  JSON 是一种数据传输格式。

也就是说,这些字符串以 JSON 这样的格式来传输,至于你怎么 parse 这些信息,甚至是是否 parse, 是否储存,都不是 JSON 的事情。

用 Python 举个例子: 某段程序可以把字符串 "{A:1, B:2}"parse 成 一对 tuple: ( ("A", 1), ("B", 2) )而不是 dictionary: {"A": 1, "B": 2}.

所以 JSON 它能被解析成 Python 的 Dictionary 或者其他形式,但解析成什么内容是和 JSON 这种格式无关的。

Python 的 Dictionary 则是 Python 对 Hash Table 的实现,一套从存储到提取都封装好了的方案。


  在python中,字典以单引号包裹,即使你以双引号定义,还是会以单引号输出!



注意

    在数据传输中,数据格式一定要是JSON标准形式,即key,value都必须用双引号包裹起来,不可以单引号(这其实主要看接收端JSON解析器怎么样,但我们标准了,再费的解析也能解析对!)

参考

讨论: 你觉得python的字典和json差不多吗?