首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用node.js解析带有转义双引号的JSON?

问如何使用node.js解析带有转义双引号的JSON?
EN

Stack Overflow用户
提问于 2020-11-17 13:23:06
回答 1查看 157关注 0票数 0

下面是我正在使用的一些JSON的示例:

代码语言:javascript
复制
{"name":"John","attributes":"{\"key\":\"value\"}"}

这也是一种更易读的格式:

代码语言:javascript
复制
{
    "name": "John",
    "attributes": "{\"key\":\"value\"}"
}

请注意,围绕键和值的双引号是转义的。这是必要的,并且是有效的JSON (在jsonlint.com上检查)。

我正在尝试获取"name“的值,但是转义的双引号会导致错误。

我的node.js代码做错了什么?

代码语言:javascript
复制
var theString = '{"name":"John","attributes":"{\"key\":\"value\"}"}';
var theJSON = JSON.parse(theString);
var theName = theJSON.name;
console.log("name = " + theName);

下面是输出。错误发生在代码的第2行,其中我的字符串是"JSON.parse()“。JSON.parse似乎正在删除反斜杠,将有效的JSON转换为无效的JSON。

代码语言:javascript
复制
undefined:1
{"name":"John","attributes":"{"key":"value"}"}
                               ^
SyntaxError: Unexpected token k in JSON at position 31
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-11-17 13:28:11

由于数据的这一部分是JSON,所以您需要解析JSON,然后在attributes属性上解析JSON:

代码语言:javascript
复制
const obj = JSON.parse(json);
obj.attributes = JSON.parse(obj.attributes);

活生生的例子:

​

代码语言:javascript
复制
const json = document.getElementById("json").textContent;

const obj = JSON.parse(json);
obj.attributes = JSON.parse(obj.attributes);
console.log(obj);
代码语言:javascript
复制
<pre id="json">{
    "name": "John",
    "attributes": "{\"key\":\"value\"}"
}</pre>

​

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64876114

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档