Python 序列化数据为JSON或CSV格式,JSON序列化器和CSV序列化器很相似,因为它们都依赖Python库来进行序列化。这些库本质上都是命令式的,因此函数体由严格的语句序列组成。
JSON序列化器如下所示:
这样就创建了一个字典列表的结构,并使用json.dumps()
函数创建了字符串表示形式。JSON模块要求具体化的list
对象,因此不能提供惰性生成器函数。尽管参数值sort_keys=True
有助于单元测试,但它不是应用程序所必需的,而且会引入一些开销。
CSV序列化器如下所示:
CSV模块的读取器和写入器混合了命令式元素和函数式元素。我们必须创建写入器,并按照严格的顺序正确创建表头。上面使用了Pair
命名元组的_fields
属性来为写入器确定列标题。
写入器的writerows()
方法可以接收一个惰性生成器函数。本例中使用了每个Pair
对象的_asdict()
方法来返回一个适合CSV写入器使用的字典。