发布时间:2022-04-01 10:03:08 人气:483 作者:多测师
JSON 解码为 python 的对照表
要完成这个功能,也先要看下 json 解码为 python 对象的对照表
JSON Python
Object dict
Array list
String str
number (int) int
number (real) float
True True
False False
Null None
编码对照表和解码对照表并不是一一对应的,因此如果一个 python对象 先编码成 JSON,再转码回来后得到的对象可就不一定完全相等了。
json.loads()
这个方法的作用就是将参数 s 按照上面的对照表反序列化为一个 python 对象。参数 s 可以是 str ,byte 或者byteArray 格式, 但必须要包含 JSON 文本才可以)。具体函数声明如下:
json.loads(s, *, encoding=None, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
下面就来一一了解下一些常用参数的意义
s 就是要解码的 python 字符串
encoding 指定编码格式
parse_float ,默认情况下相当于 float(num_str)。如果设置为其他值,将会把一个 JSON 字符串按照 float 解码调用,
parse_int ,默认情况下相当于 int(num_str),如果指定,将把每个 JSON 字符串按照 int 解码调用
来看下面的例子,其中最后一行就指定了 parse_float 。
>>> import json
>>> json.loads('["foo", {"bar":["baz", null, 1.0, 2]}]')
['foo', {'bar': ['baz', None, 1.0, 2]}]
>>> json.loads('"\\"foo\\bar"')
'"foo\x08ar'
>>> import decimal
>>> json.loads('1.1', parse_float=decimal.Decimal)
Decimal('1.1')
json.load()
先来看函数声明
json.load(fp, *, cls=None, object_hook=None, parse_float=None, parse_int=None, parse_constant=None, object_pairs_hook=None, **kw)
作用是将 fp 文件流反序列化为 python 对象,其中的参数意义和 loads 方法相同。来看一个例子。
>>> import json
>>> from io import StringIO
>>> io = StringIO('["streaming API"]')
>>> json.load(io)
['streaming API']
以上内容为大家介绍了如何将 JSON 解码成 python 对象?,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注多测师。https://www.e70w.com/xwzx/