Я получаю «SyntaxError: неожиданный токен в JSON в позиции 1» при использовании JSON.parse - PullRequest
0 голосов
/ 15 февраля 2019

У меня проблемы с доступом к списку 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 голосов
/ 15 февраля 2019

формат 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"]');
...