Python中的JSON编码器和解码器包
JSON代表JavaScript对象符号。它是一种轻量级的数据交换格式。它类似于泡菜。但是,泡菜序列化是特定于Python的,而JSON格式是由许多语言实现的。Python标准库中的json模块实现了对象序列化功能,该功能类似于pickle和marshal模块。
正如在pickle模块,json模块还提供dumps()
与loads()
用于Python对象的串行化为JSON函数编码串,并dump()
和load()
方法的写入和读取序列Python从文件对象到/。
dumps()
此函数将对象转换为JSON格式。
负载()
此函数将JSON字符串转换回Python对象。
下面的示例演示了这些功能的基本用法。
>>> import json>>> data=['Rakesh',{'marks':(50,60,70)}]
>>> s=json.dumps(data)
>>> s
'["Rakesh", {"marks": [50, 60, 70]}]'
>>> json.loads(s)
['Rakesh', {'marks': [50, 60, 70]}]
个dumps()
方法可以采取可选sort_keys说法。默认情况下为False。如果设置为True,则字典键将按排序顺序显示在JSON字符串中。
>>> data={"marks":50, "age":20, "rank":5}>>> s=json.dumps(data, sort_keys=True)
>>> s
'{"age": 20, "marks": 50, "rank": 5}'
>>> json.loads(s)
{'age': 20, 'marks': 50, 'rank': 5}
该dumps()
函数还有另一个可选参数,称为缩进,它以数字作为值。它决定json字符串格式表示形式各段的长度,类似于pprint输出。
>>> data = ['Rakesh',{'marks':(50,60,70)}]>>> s = json.dumps(data, indent=2)
>>> print (s)
[
"Rakesh",{
"marks": [
50,
60,
70
]
}
]
json模块还具有与上述功能相对应的面向对象的API。模块中定义了两个类-JSONEncoder和JSONDecoder。
JSONEncoder类
此类的对象是Python数据结构的编码器。每种Python数据类型都将转换为相应的JSON类型,如下表所示。
Python | JSON格式 |
---|---|
字典 | 目的 |
列表,元组 | 数组 |
力量 | 串 |
int,float,int和float枚举 | 数 |
真正 | 真正 |
假 | 假 |
没有 | 空值 |
JSONEncoder类由JSONEncoder()
构造函数实例化。在编码器类中定义了以下重要方法
encode() -将Python对象序列化为JSON格式
iterencode() -对对象进行编码,并返回一个迭代器,生成对象中每个项目的编码形式。
indent-确定编码字符串的缩进级别
sort_keys-为true或false可以使键以排序顺序显示或不显示。
Check_circular-如果为True,则检查容器类型对象中的循环引用
以下示例对Python列表对象进行编码。
>>> e=json.JSONEncoder()>>> e.encode(data)
'["Rakesh", {"marks": [50, 60, 70]}]'
使用iterencode()
方法,编码字符串的各部分显示如下
>>> for obj in e.iterencode(data):print (obj)
[
"Rakesh"
{
"marks"
:
[
50
, 60
, 70
]
}
]
JSONDEcoder类
此类的对象有助于将json字符串中的内容解码回Python数据结构。此类的主要方法是decode()
。以下示例代码在较早的步骤中从编码的字符串中检索Python列表对象。
>>> d=json.JSONDecoder()>>> d.decode(s)
['Rakesh', {'marks': [50, 60, 70]}]
带有文件/流的JSON
json模块定义load()
并dump()
起作用,以将JSON数据写入对象之类的文件-可以是磁盘文件或字节流,然后从中读取数据。
倾倒()
此函数以JSON格式编码Python对象数据并将其写入文件。该文件必须具有写许可权。
>>> data=['Rakesh', {'marks': (50, 60, 70)}]>>> fp=open('json.txt','w')
>>> json.dump(data,fp)
>>> fp.close()
此代码将在当前目录中创建“ json.txt”。显示内容如下
["Rakesh", {"marks": [50, 60, 70]}]
加载()
此函数从文件加载JSON数据,并从文件构造Python对象。该文件必须具有读取权限才能打开。
>>> fp=open('json.txt','r')>>> ret=json.load(fp)
>>> ret
['Rakesh', {'marks': [50, 60, 70]}]
>>> fp.close()
本文介绍json模块中的重要功能。
以上是 Python中的JSON编码器和解码器包 的全部内容, 来源链接: utcz.com/z/331039.html