Node.js调用Maximizer API遇JSON读取错误,求解决建议
问题分析与解决建议
核心问题
你的代码未正确处理请求体格式与请求头配置,导致API无法解析请求内容,触发JSON读取错误。
解决步骤
修改请求配置,完成两处关键调整:
- 使用
JSON.stringify()将JavaScript对象格式的payload转换为JSON字符串 - 在请求头中添加
Content-Type: application/json,明确告知API请求体的格式
修改后的完整代码
const token = "abc123_samplefaketoken" const request = "https://api.maximizer.com/octopus/abEntryRead"; const auth = "Bearer " + token; const payload = { "abEntry": { "criteria": { "searchQuery": { "LastName": { "$EQ": "." } }, "top": "15" }, "scope": { "fields": { "key": "1", "type": "1", "webSite": "1", "displayValue": "1" } } }, "configuration": { "drivers": { "IAbEntrySearcher": "Maximizer.Model.Access.Sql.AbEntrySearcher" } }, "compatibility": { "abEntryKey": "2.0" } }; // 调整请求配置:序列化payload + 添加Content-Type头 const maxConnectOptions = { method: "POST", redirect: "follow", headers: { Authorization: auth, 'Content-Type': 'application/json' // 新增 }, body: JSON.stringify(payload) // 转换为JSON字符串 }; fetch(request, maxConnectOptions) .then((response) => response.json()) .then((resultset) => console.log(resultset)) .catch((error) => console.log("Error: " + error));
原因说明
Postman发送JSON请求时,会自动完成两个关键操作:将请求体序列化为JSON字符串,以及设置Content-Type: application/json请求头。但Node.js的fetch API不会自动处理这些——如果直接传入JavaScript对象作为body,它会将其编码为multipart/form-data或application/x-www-form-urlencoded格式,这与API期望的JSON格式不匹配,因此触发了"无法读取JObject"的解析错误。
内容的提问来源于stack exchange,提问作者PatW
相关产品推荐
相关产品推荐

