如何序列化和无法序列化的对象?

时间:2019-11-22 14:10:54

标签: json python-3.x pyarrow

我知道这是一个常见问题,但是我需要序列化一个对象,说该对象无法序列化。我正在使用外部库pyarrow,特别是正在使用ParquetDatasets和这些模式。我可以打印模式,结果如下:

stage_dataset: <pyarrow.parquet.ParquetDataset object at 0x7f8ddcc088d0>
stage_dataset_schema: <pyarrow._parquet.ParquetSchema object at 0x7f8ddc287dd0>
machine_id: BYTE_ARRAY String
wkstn_grp: BYTE_ARRAY String
charge_unit: BYTE_ARRAY String
workstation: BYTE_ARRAY String
wstndesc: BYTE_ARRAY String
current_part_no: BYTE_ARRAY String
current_oper_no: BYTE_ARRAY String
laborclass: BYTE_ARRAY String
jobclass: BYTE_ARRAY String
dml_operation: BYTE_ARRAY String

我需要将所有这些列和数据类型转换为JSON或字典之类的东西。我没有选择修改类以使其可序列化的选项,因为我不想创建该技术债。我应该在pyarrow中使用其他类或方法来允许JSON输出吗?

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

  1. 您可以编写自己的序列化器以将其传递给json.dumps(data={}, cls=Serializer)
  2. 您可以使用https://marshmallow.readthedocs.io/en/stable/并创建自己的字段以正确地序列化它们(甚至整个架构)

第二个变体更可取