使用AWS AppFlow同步至Salesforce遇JSON解析错误求助
问题分析
错误JSON_PARSER_ERROR: Cannot deserialize instance of boolean from VALUE_STRING value f(完整信息应为无法从字符串值"True"反序列化为布尔类型),根源是Redshift UNLOAD导出的CSV中,布尔值True以字符串"True"形式存储,而AWS AppFlow同步到Salesforce时,Salesforce的布尔字段要求接收**布尔类型值(小写true/false)**或等效数字(1/0),字符串格式的"True"无法被解析为布尔类型,导致同步失败。
解决方案
修改Redshift的UNLOAD查询语句,将布尔值转换为Salesforce兼容的格式,以下两种方案任选其一:
方案1:输出小写布尔字符串
把查询中的True替换为小写的字符串'true',AppFlow会自动将其识别为布尔值:
UNLOAD( 'select contact_id, 999 contact_score, ''true'' contact_is_genius from salesforce.some_table') TO 's3://your-target-bucket/prefix/' FORMAT CSV IAM_ROLE 'arn:aws:iam::your-account-id:role/your-redshift-unload-role' HEADER DELIMITER ',' CLEANPATH;
方案2:输出数字表示布尔值
Salesforce支持用1代表true,0代表false,也可以用数字形式输出:
UNLOAD( 'select contact_id, 999 contact_score, 1 contact_is_genius from salesforce.some_table') TO 's3://your-target-bucket/prefix/' FORMAT CSV IAM_ROLE 'arn:aws:iam::your-account-id:role/your-redshift-unload-role' HEADER DELIMITER ',' CLEANPATH;
验证步骤
- 执行修改后的UNLOAD语句,将数据导出到S3
- 查看S3中的CSV文件,确认
contact_is_genius列的值为true或1 - 重新运行AWS AppFlow同步任务,检查是否成功更新Salesforce对象
内容的提问来源于stack exchange,提问作者AIViz
相关产品推荐
相关产品推荐

