You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用Uber Eats API获取餐厅报告失败,JSON解析报错求助

问题排查:Uber Eats API JSON解析错误

问题描述

调用Uber Eats获取餐厅报告的API时,触发JSON解析错误,错误信息如下:

'{"error":"Could not parse json: readObjectStart: expect { or n, but found \x00, error found in #0 byte of ...||..., bigger context ...||..."}'

Python测试代码如下:

import requests
import json

payload = {
    "report_type": "FINANCE_SUMMARY_REPORT",
    "store_uuids": "xxx",
    "start_date": "2022-09-01",
    "end_date": "2022-09-15"
}

headers = {
    "authorization": "Bearer xxx"
}

report_response = requests.post('https://api.uber.com/v1/eats/report', data=payload, headers=headers)

report_response.text

Python和Postman中均出现相同错误。

问题原因

  1. 请求体格式不匹配:代码中用data=payload发送请求,requests会自动将其编码为表单格式(application/x-www-form-urlencoded),但Uber Eats的API要求接收JSON格式的请求体,这直接导致API无法解析请求内容,抛出错误。
  2. Postman配置不当:如果Postman中没有将请求体设置为raw -> JSON模式,而是用了表单提交,同样会触发该解析错误。

解决方案

1. 修正Python代码

把data=payload替换为json=payload,requests会自动将payload序列化为JSON字符串,并添加Content-Type: application/json请求头,符合API的格式要求:

import requests

payload = {
    "report_type": "FINANCE_SUMMARY_REPORT",
    "store_uuids": "xxx",
    "start_date": "2022-09-01",
    "end_date": "2022-09-15"
}

headers = {
    "authorization": "Bearer xxx"
}

# 使用json参数替代data
report_response = requests.post('https://api.uber.com/v1/eats/report', json=payload, headers=headers)

print(report_response.text)

2. 调整Postman配置

  • 请求方法保持POST
  • 在Body标签下选择raw,并将格式切换为JSON
  • 将payload以JSON格式粘贴到输入框
  • 确保Headers中包含Authorization: Bearer xxx,Content-Type: application/json会由Postman自动添加

验证

修改完成后重新发送请求,API应能正确解析请求体,返回正常响应。

内容的提问来源于stack exchange,提问作者nas-fa

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 07:45:38