JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,易于人阅读和编写。在编写Python项目时,我们也会遇到需要从JSON文件(也是文本文件)中读取数据的情况。这一章节,我们来讲讲Python怎么处理JSON文本。
一、JSON文件
JSON文件通常以“.json”作为文件拓展名,其数据格式类似于字典,通过键值对及字典的嵌套产生。例如:
{"A": 1,"B": 2.3,"4": ["x", "y", 0],"more": {"p": true,"q": false}}
其中,键为字符串,值可以是布尔值(首字母小写)、数字、序列(array)、对象(dict)、字符串、空(null)等。
二、Python编码JSON
Python有内置的json模块用于处理JSON文件,也有如Demjson的第三方库,此处我们只介绍内置的json模块,使用时需先import模块。
该模块的dumps函数,能够让我们将对象(常见为字典)编码为JSON字符串,其参数包括:
json.dumps(obj, *,skipkeys=False, ensure_ascii=True, check_circular=True,allow_nan=True, cls=None, indent=None, separators=None,default=None, sort_keys=False, **kw)
多数情况下,我们只需传入一个对象(此处举例为字典)即可:
import jsondata = {1: "A", "2": True, "C": [None, 3.4]}print(json.dumps(data))# Output: {"1": "A", "2": true, "C": [null, 3.4]}
转换对照表为:
Python数据类型 | JSON数据类型 |
dict | object |
list, tuple | array |
str, unicode | string |
int, float | number |
True / False | true / false |
None | null |
三、Python解码JSON
同样,json模块提供了loads函数便于我们解析读取到(例如从文件中)的JSON格式字符串。参数包括:
json.loads(s, *,cls=None, object_hook=None, parse_float=None,parse_int=None, parse_constant=None,object_pairs_hook=None, **kw)
同样,多数情况下,传入一个JSON格式的字符串即可:
import jsonjson_data = '{"1": "A", "2": true, "C": [null, 3.4]}'data = json.loads(json_data)print(data)print(type(data))# Output:# {'1': 'A', '2': True, 'C': [None, 3.4]}# <class 'dict'>
注意,经过loads函数转换后,得到的是dict对象。
往期回顾:
零前端高颜值可视化图表交互,PyEcharts攻略|Part.5