python 读写 json 解析

本文详细解释了JSON作为一种数据交换格式与Python字典的区别,包括它们的应用场景、内部实现及如何通过Python标准库进行JSON的编码和解码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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、付费专栏及课程。

余额充值