【问题标题】:JSON parse double quotesJSON解析双引号
【发布时间】:2021-11-11 07:30:49
【问题描述】:

我遇到了一个非常奇怪的错误。如果我运行 JSON.Parse('[""d""]') 则出现错误:“位置 3 处 JSON 中的意外标记 d”

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);

它返回 '[""d""]' 并且当我运行 JSON.Parse 时它是不正确的 JSON。

如何解决?

【问题讨论】:

    标签: javascript json parsing double-quotes


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:
      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 数据结构。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-03-27
        • 1970-01-01
        • 1970-01-01
        • 2018-09-05
        • 2018-01-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多