如何使用 node.js 解析带有转义双引号的 JSON?
How to parse JSON with escaped doublequotes, using node.js?
这是我正在使用的一些 JSON 示例:
{"name":"John","attributes":"{\"key\":\"value\"}"}
又来了,格式更易读:
{
"name": "John",
"attributes": "{\"key\":\"value\"}"
}
注意上面 key 和 value 周围的双引号被转义了。这是必要的,并且是有效的 JSON(在 jsonlint.com 处检查)。
我正在尝试获取“name”的值,但转义的双引号导致了错误。
我的 node.js 代码哪里做错了?
var theString = '{"name":"John","attributes":"{\"key\":\"value\"}"}';
var theJSON = JSON.parse(theString);
var theName = theJSON.name;
console.log("name = " + theName);
下面是输出。错误发生在我的代码的第二行,其中我“JSON.parse()”是字符串。 JSON.parse 似乎要删除反斜杠,将有效的 JSON 变为无效的 JSON.
undefined:1
{"name":"John","attributes":"{"key":"value"}"}
^
SyntaxError: Unexpected token k in JSON at position 31
因为那部分数据是 JSON-within-JSON,你要解析 JSON,然后解析 [=13] 上的 JSON =] 属性:
const obj = JSON.parse(json);
obj.attributes = JSON.parse(obj.attributes);
实例:
const json = document.getElementById("json").textContent;
const obj = JSON.parse(json);
obj.attributes = JSON.parse(obj.attributes);
console.log(obj);
<pre id="json">{
"name": "John",
"attributes": "{\"key\":\"value\"}"
}</pre>
这是我正在使用的一些 JSON 示例:
{"name":"John","attributes":"{\"key\":\"value\"}"}
又来了,格式更易读:
{
"name": "John",
"attributes": "{\"key\":\"value\"}"
}
注意上面 key 和 value 周围的双引号被转义了。这是必要的,并且是有效的 JSON(在 jsonlint.com 处检查)。
我正在尝试获取“name”的值,但转义的双引号导致了错误。
我的 node.js 代码哪里做错了?
var theString = '{"name":"John","attributes":"{\"key\":\"value\"}"}';
var theJSON = JSON.parse(theString);
var theName = theJSON.name;
console.log("name = " + theName);
下面是输出。错误发生在我的代码的第二行,其中我“JSON.parse()”是字符串。 JSON.parse 似乎要删除反斜杠,将有效的 JSON 变为无效的 JSON.
undefined:1
{"name":"John","attributes":"{"key":"value"}"}
^
SyntaxError: Unexpected token k in JSON at position 31
因为那部分数据是 JSON-within-JSON,你要解析 JSON,然后解析 [=13] 上的 JSON =] 属性:
const obj = JSON.parse(json);
obj.attributes = JSON.parse(obj.attributes);
实例:
const json = document.getElementById("json").textContent;
const obj = JSON.parse(json);
obj.attributes = JSON.parse(obj.attributes);
console.log(obj);
<pre id="json">{
"name": "John",
"attributes": "{\"key\":\"value\"}"
}</pre>