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

POST请求出现value_error.jsondecode错误的排查与代码优化咨询

问题解答

为什么fetch的body不能直接传JS对象?

fetch的body参数只接受字符串、FormData、Blob这类可被HTTP请求序列化的格式。你直接传普通JS对象时,浏览器无法自动将其转换为后端API要求的JSON格式,加上你设置了Content-Type: application/json,后端会尝试按JSON解析请求体,自然就会抛出"value_error.jsondecode"解码错误。

正确的动态生成请求体方法

先创建包含动态输入值的JS对象,再用JSON.stringify()把对象转换成符合要求的JSON字符串,同时注意API要求的参数名大小写(提供商示例里是小写的prompt,别写成大写Prompt):

async function fetchApi() {
  // 构建带动态值的请求体对象
  const requestBody = {
    seed: inputSeed.value,
    prompt: inputPrompt.value // 匹配API要求的参数名
  };

  const options = {
    method: "POST",
    headers: {
      Authorization: auth,
      "Content-Type": "application/json",
    },
    // 将对象转为JSON字符串
    body: JSON.stringify(requestBody)
  };

  try {
    const response = await fetch(url, options);
    const data = await response.json();
    console.log(data);
  } catch (error) {
    console.error(error);
  }
}

额外注意事项

  • 手动拼接JSON字符串很容易出现语法错误(比如引号漏写、逗号错误),用JSON.stringify()能自动处理这些问题,更可靠
  • 严格匹配API要求的参数名大小写,否则后端可能无法识别对应参数

内容的提问来源于stack exchange,提问作者28282733728299919

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.10 02:01:27