笔记来源
一、使用 json 保存结构化数据
json 标准模块采用 Python 数据层次结构,并将之转换为字符串表示形式的过程称为
serializing (序列化)
。
从字符串表示中重建数据称为deserializing (解序化)
。
在序列化和解序化之间,表示对象的字符串可能已经存储在文件或数据中,或通过网络连接发送到远方 的机器。
>>> import json
>>> result_json = json.dumps([1, 'simple', 'list'])
>>> print(result_json)
'[1, "simple", "list"]'
>>> type(result_json)
<class 'str'>
二、基本使用
2.1 基础讲解
- json.dump
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)
- 注意事项
- 使用这个 转换表 将 obj 序列化为 JSON 格式化流形式的 fp (支持 .write() 的 file-like object)。
- json 模块始终产生
str 对象
而非 bytes 对象。因此,fp.write() 必须支持 str 输入- 如果
ensure_ascii
是 true (即默认值),输出保证将所有输入的非 ASCII 字符转义。如果 ensure_ascii 是 false,这些字符会原样输出。- 如果 indent 是一个非负整数或者字符串,那么 JSON 数组元素和对象成员会被美化输出为该值指定的缩进等级。
如果缩进等级为零、负数或者 “”,则只会添加换行符。 None (默认值) 选择最紧凑的表达。 使用一个正整数会让每一层缩进同样数量的空格。 如果 indent 是一个字符串 (比如 “\t”),那个字符串会被用于缩进每一层。
当指定时,separators 应当是一个 (item_separator, key_separator) 元组。当 indent 为 None 时,默认值取 (’, ', ‘: ‘),否则取 (’,’, ': ')。为了得到最紧凑的 JSON 表达式,你应该指定其为(',', ':')
以消除空白字符。- 如果
sort_keys
是 true(默认为 False),那么字典的输出会以键的顺序排序。
# json.dump的使用在 爬虫入门概念与硬核实战巩固(一) 博客中有
fp = open('./douban.json','w',encoding='utf8')
json.dump(list_data,fp,ensure_ascii=False)
- json.dumps
使用这个 转换表 将 obj 序列化为 JSON 格式的 str。
[即将 Python 对象编码成 JSON 字符串]
其参数的含义与 dump() 中的相同