使用HubSpot PHP API v5.3.0创建Deal突发DeserializationFeature.FAIL_ON_TRAILING错误
HubSpot PHP API v5.3.0 创建Deal时JSON格式错误问题解决
问题详情
使用HubSpot PHP API v5.3.0,未修改原有代码的情况下,调用创建Deal的接口突然抛出JSON格式错误:
Invalid input JSON on line 1, column 342: Trailing token (of type END_OBJECT) found after value (bound as
com.hubspot.deals.base.DealView): not allowed as perDeserializationFeature.FAIL_ON_TRAILING_TOKENS
调用代码如下:
$result = $this->_HubSpotIntegrator->deals()->create($properties, $associations);
相关参数说明:
$this->_HubSpotIntegrator是有效的SevenShores\Hubspot\Http\Client实例,其他API功能均可正常运行$properties为包含name="dealname"、value="Test"的数组$associations为包含associatedCompanyIds="#########"的关联数组
解决方案
1. 手动构造请求体并直接调用API
旧版本SDK可能在处理关联参数时生成了不符合HubSpot最新校验规则的JSON结构。可以绕过SDK的create方法,手动构造合规请求体后直接发送请求:
// 构造符合API要求的请求数据 $dealPayload = [ 'properties' => $properties, 'associations' => [ 'associatedCompanyIds' => [ // HubSpot API要求关联ID必须以数组嵌套value的格式传入,单个ID也要遵循此结构 ['value' => '#########'] ] ] ]; // 验证JSON编码是否合法 $jsonPayload = json_encode($dealPayload); if (json_last_error() !== JSON_ERROR_NONE) { die('JSON编码失败: ' . json_last_error_msg()); } // 直接调用HubSpot Deals API端点 $response = $this->_HubSpotIntegrator->post('/deals/v1/deal', [], $jsonPayload); $result = json_decode($response->getBody(), true);
2. 修复SDK的参数处理逻辑
如果希望继续使用SDK的create方法,可以定位到SevenShores\Hubspot\Resources\Deals类的create方法,检查参数转换为JSON的逻辑。重点确认associations参数是否被正确序列化为数组结构,避免因单个ID直接传入字符串而导致JSON格式异常。
3. 临时校验规则调整(备选,不推荐)
若以上方法无法快速生效,可尝试联系HubSpot官方支持,询问是否能临时放宽FAIL_ON_TRAILING_TOKENS的反序列化校验规则。但此操作属于平台端配置,成功概率较低,仅作为紧急情况下的备选思路。
内容的提问来源于stack exchange,提问作者Rob Santoro
相关产品推荐
相关产品推荐

