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

使用SendInBlue API创建联系人时属性参数异常问题求助

解决SendInBlue C# SDK创建联系人时"attributes should be an object"异常

嘿,我一眼就发现问题所在啦!你遇到的错误是因为把Attributes属性赋值成了JSON字符串,但SendInBlue的C# SDK要求这个字段传递的是对象类型(不是序列化后的字符串)。SDK内部会自动帮你把对象序列化成JSON格式发送给API,你手动传字符串反而会让API误以为attributes是个字符串值,而不是它需要的对象结构。

修正后的代码示例

你可以用Dictionary<string, object>来灵活传递自定义属性,这是最通用的写法:

Configuration.Default.ApiKey.Add("api-key", "XXXX");
var apiInstance = new ContactsApi();

// 用字典存储联系人属性,而不是手动转JSON字符串
var contactAttributes = new Dictionary<string, object>
{
    { "FIRSTNAME", "Matt" }
};

var createContact = new CreateContact 
{ 
    Email = email, 
    Attributes = contactAttributes // 这里传递对象,不是字符串!
};

try {
    CreateUpdateContactModel result = apiInstance.CreateContact(createContact);
} catch (ApiException ex) { 
    // 建议在这里添加异常日志,方便排查
    Console.WriteLine($"API调用失败: {ex.Message}");
}

如果你的SDK版本提供了强类型的属性类(比如CreateContactAttributes),也可以用更类型安全的写法:

var contactAttributes = new CreateContactAttributes
{
    FIRSTNAME = "Matt"
};

var createContact = new CreateContact 
{ 
    Email = email, 
    Attributes = contactAttributes 
};

关键说明

  • 不要手动将属性序列化为JSON字符串,SDK会自动处理序列化逻辑
  • 确保Attributes字段的类型符合SDK的要求(查看IntelliSense或官方SDK文档即可确认)
  • 如果你要传递更多自定义属性,直接往字典里添加键值对就行,比如{ "LASTNAME", "Doe" }

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 14:52:31