python data_error ai_generated true

JSON 解码错误:期望值:第 1 行第 1 列(字符 0)

json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

ID: python/starlette-request-body-json-error

其他格式: JSON · Markdown 中文 · English
80%修复率
86%置信度
0证据数
2024-11-12首次发现

版本兼容性

版本状态引入弃用备注
3.x active

根因分析

请求体为空或不是有效的 JSON,而端点尝试将其解析为 JSON。

English

The request body is empty or not valid JSON when the endpoint tries to parse it as JSON.

generic

解决方案

  1. 90% 成功率
    Validate content-type and body: if request.headers.get('content-type') == 'application/json' and await request.body(): data = await request.json() else: return JSONResponse({'error': 'Invalid JSON'}, status_code=400)
  2. 95% 成功率
    Use FastAPI's body parameter with Pydantic model to automatically handle validation errors

无效尝试

常见但无效的做法:

  1. 50% 失败

    Catches the error but doesn't provide a meaningful response; the client still gets a 500.

  2. 60% 失败

    body() returns bytes; you still need to decode and parse, same issue if empty.