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

如何在JavaScript中将response.message转换为JSON格式?

解决方案

首先要明确:fetch 的 response 对象本身并没有 message 属性,你要解析的 message 是服务器返回的响应体里的字段。具体处理方式分两种情况:


情况1:服务器返回的 message 是 JSON 格式的字符串

如果服务器响应结构类似这样(message 是嵌套的JSON字符串):

{
  "message": "{\"links\": [\"url1\", \"url2\", ...]}"
}

你需要先把整个响应解析为JS对象,再手动解析 message 字段的字符串内容:

fetch(`http://127.0.0.1:80/grab`, {
        method: "post",
        headers: {
          Accept: "application/json",
          "Content-Type": "application/json",
        },
        body: JSON.stringify({
          token: token,
          key: "grab_links",
          index: 10
        }),
      })
        .then((response) => response.json()) // 先解析整个响应为JS对象
        .then((data) => {
          console.log("原始响应数据:", data);
          try {
            // 解析message字段中的JSON字符串
            const parsedMessage = JSON.parse(data.message);
            console.log("解析后的message内容:", parsedMessage);
            const linksHTML = parsedMessage;
            // 这里可以继续处理linksHTML
          } catch (err) {
            console.error("解析message失败:", err);
            console.log("原始message内容:", data.message);
          }
        })
        .catch(err => console.error("请求出错:", err));

情况2:服务器返回的 message 本身就是JSON对象

如果服务器响应结构是直接嵌套的JSON对象:

{
  "message": {
    "links": ["url1", "url2", ...]
  }
}

那你不需要额外解析,直接使用 data.message 即可:

fetch(`http://127.0.0.1:80/grab`, {
        // ... 配置不变
      })
        .then((response) => response.json())
        .then((data) => {
          console.log("解析后的message内容:", data.message);
          const linksHTML = data.message;
          // 后续处理逻辑
        })
        .catch(err => console.error("请求出错:", err));

排查小技巧

如果不确定服务器返回的具体格式,可以先把响应转为文本查看原始内容:

fetch(`http://127.0.0.1:80/grab`, {
        // ... 配置不变
      })
        .then((response) => response.text()) // 先拿到原始文本
        .then((rawText) => {
          console.log("原始响应文本:", rawText);
          // 再尝试解析为JSON
          const data = JSON.parse(rawText);
          console.log("解析后的响应对象:", data);
        })
        .catch(err => console.error("请求或解析出错:", err));

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 02:57:28