JSON数据在传输的时候需要先进行编解码。在python语言中常用标准库中的json库进行编解码工作,json可以方便的将JSON字符串解码成python中的基本数据类型,也可以将基本数据类型编码成JSON字符串进行传输,非常方便使用。
编码
编码通过 dump 和 dumps 两个函数可以编码。
dump
将基本的数据类型编码为JSON字符串。
函数声明
1 | def dump(obj, skipkeys=False, ensure_ascii=True, check_circular=True, |
常用参数
- skipkeys: 默认值是False,如果dict的keys内的数据不是python的基本类型,设置为False时,就会报TypeError的错误。此时设置成True,则会跳过这类key
- ensure_ascii:默认值True,如果dict内含有non-ASCII的字符,则会类似\uXXXX的显示数据,设置成False后,就能正常显示
- indent:应该是一个非负的整型,如果是0,或者为空,则一行显示数据,否则会换行且按照indent的数量显示前面的空白
- separators:分隔符,实际上是(item_separator, dict_separator)的一个元组,默认的就是(‘,’,’:’);这表示dictionary内keys之间用“,”隔开,而KEY和value之间用“:”隔开。
- sort_keys:将数据根据keys的值进行排序。
例子1
1 | import json |
打印输出如下:
1 | { |
dumps
dumps 将基本数据类型输出到一个文件中。
dumps的函数声明
1 | def dumps(obj, fp, skipkeys=False, ensure_ascii=True, check_circular=True, |
例子2
1 | fp = open('a.json', 'w') |
a.json 文件内容如下:
1 | { |
解码
json的解码主要有 load 和 loads 两个函数来完成
load
load 函数声明
1 | def load(s, encoding=None, cls=None, object_hook=None, parse_float=None, |
例子3
1 | dic1 = """{"name": "Paris", "population": 2243}""" |
输出为:
1 | { |
loads
loads 从一个文件中读入JSON字符串并将字符串解码为基本数据类型。
1 | fp = open('a.json', 'r',encoding='utf-8') |
输出为:
1 | {'name': 'Paris', 'population': 2243} |
格式化主要是 dumps 的时候的参数配置。