Python `JSON` 库的一些不为人知的用法
JSON 作为 REST API 事实上的标准序列化表示 (serialized representation),在 Python 很早的版本就加入了支持。很多人也许平时只用 json.dumps()
/ json.loads()
这几个方法,但事实上,这个库还有不少小众但好用的功能。
json.dumps(data, indent=4)
: 配置缩进json.dumps(data, sort_keys=True)
: 序列化以后 key 是排序好的- ^ 以上两个方法还是给人看的,数据量会加大。
json.dumps(data, separators=(',', ':')
: 序列化的时候, object :, 中间的空格都不要了。默认用的separators=(', ', ': ')
。这个方法可以压缩最后的数据量。json.dumps(data, skipkeys=True)
: 直接忽略那些 key 不是字符串的 entry.json.dumps(obj, default=convert_to_builtin_type)
v/sjson.loads(data, object_hook=dict_to_object,)
可以在加载和导出的时候在 object 和 Class 之间互转类型。for part in json.JSONEncoder().iterencode(data)
: 流式处理。f = io.StringIO(); json.dump(data, f)
: 把数据写到 buffer 中。$ curl https://example.org/api.json | python -m json.tool
有个命令行工具可以格式化 JSON 数据,还有个隐藏的--sort-keys
选项可以排序 keys。