43-json模块

简介: Python

json
Json是一种轻量级的数据交换格式。Json源自JavaScript语言,易于人类的阅读和编写,同时也易于机器解析和生成,是目前应用最广泛的数据交换格式。
Json是跨语言,跨平台的,但只能对Python的基本数据类型做操作,对Python的类就无能为力。JSON格式和Python中的字典非常像。但是,json的数据要求用双引号将字符串引起来,并且不能有多余的逗号。这是因为在别的语言中,双引号引起来的才是字符串,单引号引起来的是字符;Python程序员习惯性的在列表、元组或字典的最后一个元素的后面加个逗号,这在json中是不允许的,需要特别注意。
在Python中,很多场合是需要使用json的。比如socket通信中,你能直接发送一个列表给对方吗?显然是不行的,因为socket是基于bytes类型进行字节发送的。这时候就可以通过json将列表转换成字符串,再encode()成bytes类型,然后发送过去。
类型转换
将数据从Python转换到json格式,在数据类型上会有变化,如下表所示 :
Python JSON
dict object
list, tuple array
str string
int, float, int- & float-derived Enums number
True true
False false
None null

使用方法
json模块的使用其实很简单,对于绝大多数场合下,我们只需要使用下面四个方法就可以了:
方法 功能
json.dump(obj, fp) 将python数据类型转换并保存到json格式的文件内。
json.dumps(obj) 将python数据类型转换为json格式的字符串。
json.load(fp) 从json格式的文件中读取数据并转换为python的类型。
json.loads(s) 将json格式的字符串转换为python的类型。

案例
import json
s = ‘json’
json.dump(s,open(‘json-1.txt’,‘w’))
json-1.txt
json
json.dumps([‘foo’, {‘bar’: (‘baz’, None, 1.0, 2)}])
‘[“foo”, {“bar”: [“baz”, null, 1.0, 2]}]’
p = json.load(open(‘json-1.txt’,‘r’))
print§
j = ‘[“foo”, {“bar”: [“baz”, null, 1.0, 2]}]’
p = json.loads(j)
[“foo”, {“bar”: [“baz”, null, 1.0, 2]}]

仔细观察四个方法的名称,很好记忆的,要转化成json就‘dump’,要从json转化成Python就‘load’;要根据字符串转化就加‘s’,要从文件进行转化就不加‘s’。
需要注意的是json模块不支持bytes类型,要先将bytes转换为str格式
import json
s = b’json’
k = json.dumps(s)
Traceback (most recent call last):
File “<pyshell#5>”, line 1, in
k = json.dumps(b)
File “C:\Python36\lib\json_init_.py”, line 231, in dumps
return _default_encoder.encode(obj)
File “C:\Python36\lib\json\encoder.py”, line 199, in encode
chunks = self.iterencode(o, _one_shot=True)
File “C:\Python36\lib\json\encoder.py”, line 257, in iterencode
return _iterencode(o, 0)
File “C:\Python36\lib\json\encoder.py”, line 180, in default
o.class.name)
TypeError: Object of type ‘bytes’ is not JSON serializable
k = json.dumps(b.decode())
k
‘“json”’

相关文章
|
存储 XML JSON
json模块和pickle模块
json模块和pickle模块
76 0
|
JSON 数据格式
易语言 精易模块 操作json数据
作者主页:https://www.couragesteak.com/
易语言 精易模块 操作json数据
|
1月前
|
JSON 数据格式 Python
Python编程:利用JSON模块编程验证用户
Python编程:利用JSON模块编程验证用户
|
1月前
|
存储 JSON 数据格式
Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
Python 输入输出与文件处理: io、pickle、json、csv、os.path 模块详解
35 0
|
3月前
|
存储 JSON JavaScript
python序列化: json & pickle & shelve 模块
python序列化: json & pickle & shelve 模块
|
5月前
|
JSON JavaScript 前端开发
json模块与jsonpath详解
json模块与jsonpath详解
|
6月前
|
JSON 数据格式 Python
Python标准库中包含了json模块,可以帮助你轻松处理JSON数据
【4月更文挑战第30天】Python的json模块简化了JSON数据与Python对象之间的转换。使用`json.dumps()`可将字典转为JSON字符串,如`{&quot;name&quot;: &quot;John&quot;, &quot;age&quot;: 30, &quot;city&quot;: &quot;New York&quot;}`,而`json.loads()`则能将JSON字符串转回字典。通过`json.load()`从文件读取JSON数据,`json.dump()`则用于将数据写入文件。
50 1
|
6月前
|
JSON 前端开发 API
Python中的JSON模块:从基础到高级应用全解析
【2月更文挑战第3天】 Python中的JSON模块:从基础到高级应用全解析
483 6
|
6月前
|
存储 JSON JavaScript
Python中的JSON与Pickle模块:数据序列化和反序列化的利器
在Python编程中,数据的序列化和反序列化是经常遇到的操作。序列化是将数据结构或对象状态转换为可以存储或传输的格式的过程,而反序列化则是这个过程的逆操作,即将序列化的数据重新转换回原来的数据结构或对象状态。Python中的JSON和Pickle模块就是实现数据序列化和反序列化的强大工具。
|
6月前
|
存储 JSON 安全
序列化模块pickle和json有什么区别
序列化模块pickle和json有什么区别
60 0