Json,全名 JavaScript Object Notation,是一种轻量级的数据交换格式。
对json的操作由 json 库来完成,在 python2.6之后将 json 加入了标准库,用户可以直接使用 import json 来引用。
json 格式看起来和 python 的字典很相似,但是两者有很大的不同。
json 是一种数据传输格式,这一点在 json 官网上有明确的定义。也就是说,这些字符串以 json 这样的格式来传输,至于你怎么解析这些信息,甚至是是否 解析,是否储存,都不是 json 的事情。用 Python 举个例子: 某段程序可以把字符串 “{A:1, B:2}” 解析成 一对 tuple ( (“A”, 1), (“B”, 2) ) 而不是 dictionary {“A”: 1, “B”: 2}。
Python 的 dictionary 是对 Hash Table 这一数据结构的一种实现。它使用其内置的哈希函数来规划键对应的内容的储存位置,从而获得 O(1) 的数据读取速度。
所以 JSON 是一种数据传输格式,它能被解析成 Python 的 Dictionary 或者其他形式,但解析成什么内容是和 JSON 这种格式无关的。Python 的 Dictionary 则是 Python 对 Hash Table 的实现,一套从存储到提取都封装好了的方案
作者:暮山
链接:https://www.zhihu.com/question/21097237/answer/133705810
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
通俗来讲,json 就是一个根据某种约定格式编写的纯字符串,不具备任何数据结构的特征。而 python 的字典的字符串表现形式的规则看上去和 json 类似,但是字典本身是一个完整的数据结构,实现了一切自身该有的算法。
作者:杨学光
链接:https://www.zhihu.com/question/21097237/answer/133705812
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
json 操作主要分为编码和解码两个过程
编码:把一个Python对象编码转换成Json字符串 json.dumps()
解码:把Json格式字符串解码转换成Python对象 json.loads()
import json
m = open("jsontest.txt","w")
a = {'data1':"apple",'data2':"melon",'data3':"peach"}
# dump 和 dumps 很相似,dumps 将 python 对象编码为 str 格式,
# dump 中多了一个文件句柄,可以直接将编码之后的 json 格式写入文件
in_json1 = json.dumps(a)
print type(in_json1) # str
print in_json1 #{"data1":"apple","data2":"melon","data3":"peach"}
in_json2 = json.dump(a,m)
print type(in_json2) #NoneType
print in_json2 #None
运行结果:
当字典中有中文时,编码入 json 会将中文转译
b = {"test":"中文字符"}
in_json3 = json.dumps(b)
print b
print in_json3
这时候可以对 dumps 添加参数,使编码方式为 utf-8
b = {"test":"中文字符"}
in_json3 = json.dumps(b, encoding='utf-8', ensure_ascii=False)
print b
print in_json3