使用JSON.parse时出现“ SyntaxError:JSON中位置1上的意外令牌'”

时间:2019-02-15 13:55:59

标签: javascript python django python-3.x django-templates

我在访问param = ['foo','bar']上的列表myView.js时遇到问题。

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

1 个答案:

答案 0 :(得分:1)

json格式仅允许双引号(token ' in JSON at position 1),单引号的字符串不是有效的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"]');