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

Node.js 6.10中如何从JSON提取指定值?

问题原因分析与解决方案

咱们先拆解一下问题出在哪:

首先看你拿到的body实际内容:

returned data1 "{'response' : 'Not latest version of file, update not performed'}"

这里的body本质是被双引号包裹的字符串,而且内部的结构用了单引号——但JSON的语法规范明确要求:

  • 对象的键和字符串值必须使用双引号
  • 单引号不能用来包裹JSON的键或值

你直接执行JSON.parse(body)时,其实是把整个带双引号的内容解析成了一个字符串变量(而非JSON对象),所以之后尝试用jsonBody["response"]取属性,自然会得到undefined——因为字符串根本没有这个属性。

修正后的代码方案

我们需要先对body做两步预处理,再进行解析:

// 1. 去掉body首尾的外层双引号
const cleanedBody = body.replace(/^"|"$/g, '');
// 2. 把内部的单引号替换成双引号,符合JSON语法规范
const validJsonStr = cleanedBody.replace(/'/g, '"');
// 3. 现在可以正常解析成JSON对象了
const jsonBody = JSON.parse(validJsonStr);
const valueReturned = jsonBody.response;
console.log("logs: " + valueReturned);

额外补充

如果你的body里存在带转义的单引号(比如"{'msg': 'it\'s a test'}"),直接替换所有单引号会出问题,这时候可以考虑用更严谨的正则处理,但根据你给出的场景,上面的代码已经能完美解决问题啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:31:53