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

Facebook Graph API返回AdgroupPlacementSpecificReviewFeedback无法JSON序列化求解

解决方案

这个报错的核心原因是Facebook Marketing API SDK返回的AdgroupPlacementSpecificReviewFeedback是自定义类实例,不属于JSON可序列化的原生类型,你打印时看到的<AdgroupPlacementSpecificReviewFeedback>标识是类的__repr__方法输出的内容,并非接口返回的原始字符串内容,不需要用正则处理字符串,可直接通过以下更稳定的方法解决:

  • 方法1:使用SDK内置的字典转换方法
    绝大多数版本的Facebook Python Marketing SDK中,所有业务对象类都内置了递归转原生字典的方法,直接调用即可:

    # ad_review_feedback为你从接口获取的原始返回对象
    review_feedback_dict = ad_review_feedback.export_all_data()
    

    该方法会自动将所有嵌套的自定义对象(包括placement_specific下的特殊类实例)转换为Python原生dict,可直接用于JSON序列化。

  • 方法2:自定义JSON序列化规则
    如果你使用的SDK版本没有内置转换方法,可以给json.dumps方法指定自定义序列化逻辑:

    import json
    from facebook_business.adobjects.adgroup_placement_specific_review_feedback import AdgroupPlacementSpecificReviewFeedback
    
    def custom_serializer(obj):
        if isinstance(obj, AdgroupPlacementSpecificReviewFeedback):
            # 提取对象内存储的原始数据
            return getattr(obj, '_data', {})
        # 其他类型走默认序列化逻辑
        raise TypeError(f"Object of type {obj.__class__.__name__} is not serializable")
    
    # 序列化时传入自定义方法
    result_json = json.dumps(your_api_response, default=custom_serializer)
    
  • 方法3:手动提取目标字段
    如果你只需要placement_specific下的具体内容,不需要转换整个返回对象,可以直接提取实例的内置数据属性:

    placement_specific_data = ad_review_feedback['placement_specific']._data
    

    提取得到的就是包含facebook、instagram等平台审核反馈的原生字典,可直接使用。

注意:不建议使用正则处理字符串的方案,该方案需要先把对象转成字符串再做替换,遇到特殊转义字符、字段内容包含关键字时极易出错,稳定性远低于直接操作对象的方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 17:18:01