#javascript #django
#javascript #django
Вопрос:
Я использую фреймворк Django и пытаюсь передать список JSON в свой javascript.
Вот как я поступил:
На стороне сервера (Python / Django):
context['my_json_list'] = [{'aaa': 'rst', 'bbb': 'uvw'}, {'ccc': 'xyz'}]
return context
На стороне клиента (html / javascript):
В HTML:
<script type="text/javascript">
app.init("{{my_json_list|safe}}");
В JS:
var app = (function ($) {
return {
init: function (my_json_list) {
console.log(my_json_list);
my_json_list = JSON.parse(my_json_list);
}
}
}
console.log()
Выводится:
[{amp;#39;aaaamp;#39;: amp;#39;rstamp;#39;, amp;#39;bbbamp;#39;: etc...
который не кажется «анализируемым» с помощью JSON.parse, поскольку я получаю следующую ошибку:
angular.js:11413 SyntaxError: Unexpected token amp; in JSON at position 2
Правильно ли это делать то, что я хочу, если да, то как решить часть синтаксического анализа на стороне JS? Если нет, как правильно сделать то, чего я хочу достичь?
Комментарии:
1. … Вы пробовали использовать вместо этого фильтр JSON?
2. Кроме того, если у вас действительно есть JSON, вам не нужно будет его анализировать, поскольку JSON — это литерал JavaScript.
Ответ №1:
JSON.parse(my_json_list);
Метод JSON.parse() анализирует строку JSON, создавая значение JavaScript или объект, описанный строкой.
Вы не передали строку или допустимый Json, поэтому метод не удался.
Это недопустимый json. Вы должны проверить jsonlint.com чтобы убедиться, что вы передаете действительный json. Проблема здесь в том, что его чтение одинарной кавычки amp;#39;
является кодом для ‘. Вы должны использовать двойные кавычки в вашем json.
Пример допустимого Json
{
"my_list": [{
"aaa": "rst",
"bbb": "uvw"
}, {
"ccc": "xyz"
}]
}
Имена свойств должны быть строками, заключенными в двойные кавычки; конечные запятые запрещены.