python 读写 json 解析

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

运行结果:
image
当字典中有中文时,编码入 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值