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/s json.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。