gpt4 book ai didi

javascript - 解析 json 时处理反斜杠

转载 作者:行者123 更新时间:2023-11-29 10:42:16 27 4
gpt4 key购买 nike

这是我尝试对其调用 JSON.parse 的较大 JSON 字符串的一部分。我收到臭名昭著的“无效字符”错误,因为(我相信)反斜杠括号 (即“路径:\”https://mysite.sharepoint.com/sites/Test\")

我试过的所有在线解析器都工作正常,但在我的 javascript 代码中,JSON.parse 方法失败。

我尝试过像这样和其他方式清理字符串,但我一直无法解析它。

var cleanData = data.replace(/\\"/, /\\\\/);

下面是部分 JSON 文件。当我从 JSON 字符串中删除它时,JSON.parse 起作用,所以我认为我已经将它与此隔离开来。什么类型的通用清理方法可以用来解析这个东西?谢谢

'{"Properties" : {
"GenerationId" : 9223372036854776000,
"indexSystem" : "",
"ExecutionTimeMs" : 109,
"QueryModification" : "path:\"https://mysite.sharepoint.com/sites/Test\" (IsDocument:\"True\" OR contentclass:\"STS_ListItem\") ContentTypeId:0x0120D5200098CBB075E51C8C4398ECCB4B4928912D*",
"RenderTemplateId" : "~sitecollection/_catalogs/masterpage/Display Templates/Search/Group_Default.js",
"StartRecord" : 0,
"piPageImpressionBlockType" : 2
}}

如何?

最佳答案

问题是您的反斜杠作为字符串中的转义字符被吞没了:

'\"' === '"' // true

您实际上需要转义反斜杠,以便 JSON 解析器看到它们。这是另一个例子:

var unencoded = 'string with "quotes"';

'"string with \"quotes\""' === JSON.stringify(unencoded); // false
'"string with \\"quotes\\""' === JSON.stringify(unencoded); // true

但是,应该在何处进行转义取决于 JSON 如何对 JavaScript 可用。如果 JSON 由服务器端脚本嵌入到页面中,则无需使用 JSON.parse,因为有效的 JSON 是有效的 JavaScript:

// if JsonData is valid JSON, it's also a valid JavaScript object
var data = <%= JsonData %>;

关于javascript - 解析 json 时处理反斜杠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26497218/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com