发布时间:2022-04-01 10:01:49 人气:225 作者:多测师
刚开始接触 json 的操作,我主要有下面几个疑问:
json 操作需要什么库?
如何将 python 对象转换成 JSON字符串,更进一步,能不能直接转换成文件句柄存储到文件中?(编码)
如何将 json 字符串转换成 python 对象,更进一步,能不能直接将 JSON 格式的文件转换成 python 对象?(解码)
下面就让我们一一来探索这些问题。
json 操作需要什么库?
使用 json 函数前需要先导入 json 库:
import json
json 库本身就是 python 内置的标准库,因此你不需要做任何安装的操作。只要声明了上面语句,就可直接使用。
如何将 python 编码成 JSON?
python 编码为 JSON 的对照表
要完成这个功能,先要看下 python 数据结构编码为 json 的对照表。
PythonJSON
dictobject
list, tuplearray
strstring
int, float, int- & float-derived Enumsnumber
Truetrue
Falsefalse
Nonenull
有了这张表,我们就可以清楚的知道 python 对象将编码成的 json 格式。
json.dumps()
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 就是要编码的 python 对象
skipkeys 默认值是 False。设置为 True ,假如 obj 中的 dict keys 不是基本类型(str , int , float , bool , None ), 就会被忽略,而不是抛出 TypeError 错误
ensure_ascii 默认是 True , 表示默认使用ascii 编码。如果 obj 内含有非 ASCII 字符,就会出现 "\uXXXX" 格式显式的数据, 设置成 False 就会使用字符本来的编码。
这里要注意,如果输入是中文,需要指定 ensure_ascii=False
check_circular 默认值是 True,如果设置为 False 就不会检查内部类型是否包含循环引用,而且循环引用会导致 OverflowError
allow_nan 默认值为 False ,如果碰到超过范围的 float 值(nan, inf, -inf )就使用 (NaN,Infinity, -Infinity) 替换
如果为 True 碰到这些值则会导致 ValueError
indent 缩进设置
如果是非负整数或者 string, JSON Array 元素和对象元素将会按照设置的缩进格式化显示
值为 0, 负值,或者 "" 只会插入新的一行
值为 None (也是默认值)会尽可能的压缩
separators 分隔符。
如果要设置它,参数需要是一个元组(item_separator, key_separator)
默认值是 (', ', ': ') ,表示 keys 之间用 , 隔开,而 key 和 value 之间用 : 隔开
sort_keys 默认值是 False ,如果设置成 True , dict 结构的输出就会按照 key 来排序
encoding 默认值是 UTF-8 用于设置 JSON 数据的编码方式,在处理中文时这里一定要注意。
来看一个例子
>>> import json
>>> json.dumps(['foo', {'bar': ('baz', None, 1.0, 2)}])
'["foo", {"bar": ["baz", null, 1.0, 2]}]'
>>> print(json.dumps("\"foo\bar"))
"\"foo\bar"
>>> print(json.dumps('\u1234'))
"\u1234"
>>> print(json.dumps('\\'))
"\\"
>>> print(json.dumps({"c": 0, "b": 0, "a": 0}, sort_keys=True))
{"a": 0, "b": 0, "c": 0}
json.dump()
json.dump() 函数的作用就是将 python 对象转换成 JSON 字符串,并将其通过 fp 文件流写入到文件中。来看下具体的函数声明:
json.dump(obj, fp, *, skipkeys=False, ensure_ascii=True, check_circular=True, allow_nan=True, cls=None, indent=None, separators=None, default=None, sort_keys=False, **kw)
和前面的 dumps 函数进行比较,会发现两个函数的参数是非常相似的,而且它们的意义也都相同。来看下面的例子
>>> import json
>>> from io import StringIO
>>> io = StringIO()
>>> json.dump(['streaming API'], io)
>>> io.getvalue()
'["streaming API"]'
以上内容为大家介绍了Python中常用的 json 操作有哪些?,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/