You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将自定义JSON编码器类导入数据目录处理DataFrame列表列?

解决JSONDataSet保存列表列为字符串及自定义编码器无法识别问题

一、修复自定义编码器逻辑

你的CustomEncoder存在代码错误:Python列表没有to_json()方法,调用时会直接抛出异常。修改编码器代码,确保正确序列化列表及非标准JSON类型:

# src/<你的项目名>/custom_encoders.py
import json
import numpy as np

class CustomEncoder(json.JSONEncoder):
    def default(self, obj):
        # 处理numpy数组,转为Python原生列表
        if isinstance(obj, np.ndarray):
            return obj.tolist()
        # 确保列表/元组被正确序列化
        elif isinstance(obj, (list, tuple)):
            return list(obj)
        # 其他类型交给默认编码器处理
        return super().default(obj)

二、配置正确的编码器路径

Kedro的JSONDataSet配置中,cls参数需要填写完整的Python类导入路径,确保Kedro能识别到你的自定义编码器:

config_new:
  type: json.JSONDataSet
  filepath: data/01_raw/new_config.json
  save_args:
    indent: 6
    cls: <你的项目名>.custom_encoders.CustomEncoder

注意:替换<你的项目名>为实际Kedro项目的名称(即src目录下的对应文件夹名)

三、验证效果

配置完成后重新运行保存逻辑,列表列会被序列化为标准JSON数组格式,而非字符串:

"T":[{"Col1": "9","Col2": ["7","9","0","5"]}]

内容的提问来源于stack exchange,提问作者SSR

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 21:35:18