Python JSON的解析和创建
与 PHP 类似,Python 中同样提供了两个函数来分别创建和解析 JSON 数据,注意:本节是基于 Python3 进行介绍的:
json.dumps():将 Python 对象转换为 JSON 数据;
json.loads():将 JSON 数据解析为 Python 对象。
json.dumps()
在 Python 中,您可以使用 json.dumps() 函数将 Python 对象转换为 JSON 数据,语法格式如下:json.dumps(obj, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, encoding="utf-8", default=None, sort_keys=False, **kw)
参数说明如下:obj:要转换为 JSON 数据的 Python 对象;
skipkeys:默认值为 False,如果 dict 中 keys 内的数据不是 Python 的基本类型(str、unicode、int、long、float、bool、None),会报 TypeError 错误,若设置为 True,则会跳过这类 key;
ensure_ascii:默认值 True,即输出 ASCLL 码,若设置为 False,则可以输出中文;
check_circular:如果值为 False,则跳过对容器类型的循环引用检查,循环引用将导致溢出错误;
allow_nan:默认值 True,在处理 JSON 规范以外的 Float 类型时(例如:nan、inf、-inf),将其转换为 JavaScript 中的等价类型(例如:NaN、Infinity、-Infinity),若设置为 False,则会引发一个 ValueError 错误,
cls:用来指定一个自定义的 JSONEncoder 子类,来替换 JSONCoder 类;
indent:按照给定数值,将数据缩进显示,让数据读起来更加清晰;
- separators:分隔符,分别设置不同 dict 项之间的分隔符和 dict 项内 key 与 value 之间的分隔符,并将冒号
:
与逗号,
之后的空格全部去除; encoding:设置 JSON 数据的编码方式,默认为 UTF-8;
default:指定一个函数,当某个对象无法被序列化时会调用该函数;
sort_keys:若值为 Ture,则表示按照 dict 排序(a 到 z)输出。
示例代码如下:
import json
dictionary = {"title":"JSON教程","author":"C语言中文网","url":"http://c.biancheng网站站点" rel="nofollow" />
参数说明如下:{
"title": "JSON教程",
"author": "C语言中文网",
"url": "http://c.biancheng网站站点" rel="nofollow" />json.loads(s[, encoding[, cls[, object_hook[, parse_float[, parse_int[, parse_constant[, object_pairs_hook[, **kw]]]]]]]])
s:要转换的 JSON 数据,可以是 str、bytes 或 bytearray 等类型;
encoding:可选参数,设置 JSON 数据的编码方式,默认为 UTF-8;
cls:可选参数,用于指定一个自定义 JSONCoder 的子类,来替换 JSONCoder 类;
object_hook:可选参数,将函数的返回值替换为指定的类型,该功能可以用来实现自定义解码器,例如 JSON-RPC;
parse_float:可选参数,如果指定该参数,那么在解码 JSON 数据时,符 float 类型的字符串将转换为指定的类型;
parse_int:可选参数,如果指定该参数,那么在解码 JSON 数据时,符 int 类型的字符串将转换为指定的类型;
parse_constant:可选参数,如果指定该参数,那么在解码 JSON 数据时,若出现 -Infinity、Infinity、NaN 等字符串,则调用指定的方法;
object_pairs_hook:可选参数,将结果以 key-value 有序列表的形式返回,如果 object_hook 和 object_pairs_hook 同时指定的话,优先按照 object_pairs_hook 的设置返回。
示例代码如下:
import json
json_str = '{"title":"JSON教程","author":"C语言中文网","url":"http://c.biancheng网站站点" rel="nofollow" />
{'title': 'JSON教程', 'author': 'C语言中文网', 'url': 'http://c.biancheng网站站点" rel="nofollow" />