java - Mailchimp API 发布成员批量操作
问题描述
我发现当我向 Mailchimp API 提交批处理操作以将成员添加到 Mailchimp 受众时,操作失败并出现此错误...
[{\"field\":\"email_address\",\"message\":\"This value should not be blank.\"}]
这很奇怪,因为我的批处理操作指定了 email_addresses。
ArrayList<MailchimpOperation> operations = new ArrayList<MailchimpOperation>();
for (Contact contact : contacts) {
MailchimpOperation operation = new MailchimpOperation();
operation.method = "POST";
operation.path = "lists/" + audienceid + "/members";
NewMember newMember = new NewMember();
newMember.email_address = contact.email;
MergeFields mf = new MergeFields();
mf.FNAME = contact.firstname;
mf.LNAME = contact.lastname;
newMember.merge_fields = mf;
newMember.status = "subscribed";
operation.body = newMember.toString();
operation.operation_id = "add_batch_" + batchNumber + "_to_mailchimp_audience_" + audienceid;
operations.add(operation);
}
我在一些堆栈溢出帖子中看到 operation.body 应该是一个 JSON 对象。我也试过这个......
ArrayList<MailchimpOperation> operations = new ArrayList<MailchimpOperation>();
for (Contact contact : contacts) {
MailchimpOperation operation = new MailchimpOperation();
operation.method = "POST";
operation.path = "lists/" + audienceid + "/members";
NewMember newMember = new NewMember();
newMember.email_address = contact.email;
MergeFields mf = new MergeFields();
mf.FNAME = contact.firstname;
mf.LNAME = contact.lastname;
newMember.merge_fields = mf;
newMember.status = "subscribed";
operation.body = newMember;
operation.operation_id = "add_batch_" + batchNumber + "_to_mailchimp_audience_" + audienceid;
operations.add(operation);
}
这会产生错误...
Mailchimp error: The resource submitted could not be validated. For field-specific details, see the 'errors' array.,mailchimp error 1 Schema describes string, object found instead,mailchimp error 2 Schema describes string, object found instead
如果我像这样明确设置 operation.body ,则操作成功......
operation.body = "{\"merge_fields\":{\"FNAME\":\"" + contact.firstname + "\",\"LNAME\":\""
+ contact.lastname + "\"}, \"email_address\":\"" + contact.email + "\", \"status\":\"subscribed\"}";
那么为什么我设置的第一种方法operation.body = newMember.toString()
会失败?
解决方案
解决方案是不使用 .toString(),而是这个......
operation.body = new ObjectMapper().writeValueAsString(newMember);
推荐阅读
- selenium - 与单击按钮一起使用的正确语法
- python - Numpy dstack Pandas 数据框列
- python - Python-dask/pandas 如何删除/排除每组中的最后一个观察值
- firebase - 我可以仅使用 thumbnailPhotoUrl 显示 G Suite 用户照片吗?
- r - Shiny 在单行中使用超过 12 列
- c# - 使用反射在字典上调用 Enumerable.Except (IEnumerable)
- c# - 添加到集合后如何配置服务选项?
- swift - 快速创建内部(嵌套)类是一种好习惯吗?
- arrays - 在渲染中调用函数以使用数组渲染元素
- ajax - 在传单中实现 AJAX