gpt4 book ai didi

javascript - 解析 JSON 中的反斜杠转义序列时出错

转载 作者:行者123 更新时间:2023-11-29 10:28:32 26 4
gpt4 key购买 nike

我正在尝试解析从 API 获取的 JSON 字符串:

var inputString = '{ "AccountName": "NT AUTHORITY\\SYSTEM"}'
console.log(JSON.parse(inputString)) // View in browser console to see real error

以上代码报错:

Uncaught SyntaxError: Unexpected token S in JSON at position 31 at JSON.parse () at program.html:7

现在下面的代码可以工作了:

var inputString = '{ "AccountName": "NT AUTHORITY\\\\SYSTEM"}'
console.log(JSON.parse(inputString))

显示输出:

{AccountName: "NT AUTHORITY\SYSTEM"}

反斜杠字符是 JSON 中的转义序列。但为什么我需要四个反斜杠来创建一个反斜杠?不应该只是 \\ 吗?

我从被调用的 API 获得的 JSON 响应只给我两个 \\ 哪里有路径。所以我的代码坏了。我相信 API 的 JSON 格式是正确的。当我尝试在线解析此响应时 JSON viewer然后他们就能够成功解析它。

最佳答案

首先,解析模板字面量。就像在普通字符串中一样,双反斜杠被翻译成单个文字反斜杠。因此,您的初始 inputString:

var inputString = `{ "AccountName": "NT AUTHORITY\\SYSTEM"}`

将有一个单个反斜杠。

console.log(`\\`.length);

与普通 Javascript 字符串(其中不必要的反斜杠被忽略)不同,JSON 格式要求反斜杠位于要转义的特殊字符之前(如 " 或另一个 \)。如果一个反斜杠和后面的字符没有转换为转义字符,一个SyntaxError就像你在你的问题中看到的那样抛出。

因此,要在 JSON 中指示文字反斜杠,您需要在 JSON 中使用两个反斜杠,而要在 Javascript 字符串中指示文字反斜杠,您还需要两个反斜杠。总之,您需要四个反斜杠来指示 JSON 中的文字反斜杠。

如果您希望手动编写包含 literal 反斜杠的字符串,并且您不需要使用转义字符,您可以考虑使用 String.raw 作为您的模板文字,将单个反斜杠解析为文字反斜杠,而不是作为转义序列的一部分:

console.log(
String.raw`\\`.length
);
const inputString = String.raw`{ "AccountName": "NT AUTHORITY\\SYSTEM"}`;
console.log(JSON.parse(inputString))

关于javascript - 解析 JSON 中的反斜杠转义序列时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52343137/

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