我在使用 JSON.parse 时收到“SyntaxError: Unexpected token ' in JSON at position 1”

Posted

技术标签:

【中文标题】我在使用 JSON.parse 时收到“SyntaxError: Unexpected token \' in JSON at position 1”【英文标题】:I am getting "SyntaxError: Unexpected token ' in JSON at position 1" when using JSON.parse我在使用 JSON.parse 时收到“SyntaxError: Unexpected token ' in JSON at position 1” 【发布时间】:2019-07-09 16:29:23 【问题描述】:

我无法访问myView.js 上的列表param = ['foo','bar']

JS 代码将param 视为一个字符串,但是当我尝试JSON.parse(param) 时,我得到如下所示的错误。

我在这里错过了什么?

myView.html:

    <script>
    window.obj = ;
    obj.param = " param | safe ";
    </script>

views.py:

    def myView(req):
        context = 'param':['foo','bar']
        return render(req, 'myView.html', context)

myView.js:

$(document).ready(function() 

      console.log(window.obj.param); //prints ['foo','bar']
      console.log(window.obj.param[0]); //prints [
      console.log(JSON.parse(window.obj.param)); // Uncaught SyntaxError: Unexpected token ' in JSON at position 1

      //what I need to happen
      console.log(param[0]); // prints 'foo'
);

【问题讨论】:

json 格式只允许双引号 (token ' in JSON at position 1) 谢谢!如果您发布答案我会接受 【参考方案1】:

json格式只允许双引号(token ' in JSON at position 1),单引号的sting不是有效的json格式,所以如果你尝试解析它,你会得到一个错误,如下所示

function safeParse(param)
    try 
        console.log(JSON.parse(param))
     catch (e) 
        console.log("there was an issue with parsing your string")
    

safeParse("['foo','bar']");
safeParse('["foo","bar"]');

【讨论】:

以上是关于我在使用 JSON.parse 时收到“SyntaxError: Unexpected token ' in JSON at position 1”的主要内容,如果未能解决你的问题,请参考以下文章

为啥 JSON.parse 会抛出跨域错误?

JSON.stringify 和 JSON.parse 之间的区别

JSON.parse 嵌套 JSON 字符串属性解析

找不到名称“JSON”打字稿文件

ExpressJS SyntaxError:意外的令牌 C

node.js JSON.parse reviver 不报告重复键?