使用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
相关产品推荐
相关产品推荐

