更新Salesforce自定义对象时遇JSON_PARSER_ERROR(PATCH请求)
解决Salesforce REST API更新自定义对象的400错误及200无更新问题
看起来你遇到的是Salesforce API更新时的典型问题,咱们一步步拆解解决:
首先处理400 JSON_PARSER_ERROR错误
这个错误的核心提示很明确:请求缺少HTTP实体体。不管你用原生的PATCH方法,还是用POST加?_HttpMethod=PATCH的覆盖方式,都必须在请求体中传入要更新的JSON数据,同时设置请求头Content-Type: application/json。
举个简单的正确请求示例(假设自定义对象是Custom_Item__c,要更新的字段是Status__c,记录ID是001D000000K0fXOIAZ):
# 原生PATCH方式 curl -X PATCH \ https://your-salesforce-instance.my.salesforce.com/services/data/v58.0/sobjects/Custom_Item__c/001D000000K0fXOIAZ \ -H 'Authorization: Bearer YOUR_VALID_ACCESS_TOKEN' \ -H 'Content-Type: application/json' \ -d '{ "Status__c": "Completed" }'
为什么POST+?_HttpMethod=PATCH返回200但没实际更新?
返回200说明请求本身被Salesforce接收并处理了,但没有更新数据,大概率是这几个原因:
- 忘记传请求体:很多人用方法覆盖时,只改了URL和请求方法,却漏掉了要更新的JSON数据,Salesforce会返回200但不执行任何更新操作。
- URL或记录ID错误:确认URL末尾的记录ID是否正确,自定义对象的API名称有没有写错(注意要带
__c后缀)。 - 字段名拼写错误:自定义字段必须带
__c,比如Customer_Name__c而不是CustomerName,大小写也要匹配Salesforce定义的API名称。 - 请求头缺失:必须确保
Content-Type: application/json头存在,否则Salesforce无法解析请求体里的JSON数据。
额外排查点
- 确认自定义对象和字段的
Updateable属性为true:可以调用Describe API查询:/services/data/vXX.X/sobjects/Custom_Item__c/describe,在返回的fields数组里找到对应字段,检查updateable值是否为true。 - 检查API用户权限:虽然你在平台能编辑,但API调用使用的用户(对应Access Token的用户)需要拥有API Enabled权限,以及该自定义对象的编辑权限(在Profile或Permission Set中确认)。
- 验证Access Token有效性:可以调用
/services/data/vXX.X/chatter/users/me来确认Token是否正常工作,避免因Token过期或无效导致的隐性问题。
内容的提问来源于stack exchange,提问作者Diego
相关产品推荐
相关产品推荐

