Python中常用的 json 操作有哪些?

发布时间: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 格式。

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/


返回列表
在线客服
联系方式

热线电话

17727591462

上班时间

周一到周五

二维码
线