JSON 解析双引号

JSON parse double quotes

我遇到了一个很奇怪的错误。如果我 运行 JSON.Parse('[""d""]') 那么我有错误:“Unexpected token d in JSON at position 3”

JSON.parse('["\"d\""]')

如果我 运行 console.log(JSON.stringify(['"d"'])) 然后我得到 '[""d""]'

console.log(JSON.stringify(['"d"']))

如果我 运行 console.log(JSON.parse(JSON.stringify(['"d"']))) 那么我会得到好的结果 [""d" "]

console.log(JSON.parse(JSON.stringify(['"d"'])))

如果我使用 eval 函数,则会出现错误:“Uncaught SyntaxError: Unexpected token d in JSON at position 3”

var someJson=JSON.stringify(['"d"']);
window.eval(`JSON.parse('${someJson}')`)

如何解决?

我使用了一些外部库,并且有 window.eval(JSON.parse('${JSON.stringify(t)}')))。其中 t - json 带字符串的数组。字符串可以包含双引号。它抛出异常。

我发现js在我设置的时候改变了我的字符串值

var someJson='["\"d\""]';
console.log(someJson);

它 returns '[""d""]' 而当我 运行 JSON.Parse 它是不正确的 JSON.

如何解决?

JSON.parse('["\"d\""]')

\ 是 JS 字符串中的特殊字符,因此要将其包含在您的 JSON 中,您需要对其进行转义。

const yourString = '["\"d\""]';
const validJSON = '["\"d\""]'
const parsedData = JSON.parse(validJSON);

document.querySelector('#yourString').value = yourString;
document.querySelector('#validJSON').value = validJSON;
<p>Your string: <output id="yourString"></output>
<p>Valid JSON: <output id="validJSON"></output>

根据经验,在字符串文字中嵌入 JSON 是浪费时间和精力。您可以只编写解析 JSON.

得到的 JS 数据结构

@Quentin 非常感谢您的想法!我的结果答案:

var someJson=JSON.stringify(['"d"']);
console.log(window.eval(`JSON.parse('${someJson.replaceAll('\','\\')}')`))