安全地传递JSON从Django到Javascript添加'不能被JSON解析的字符.解析方法

Passing JSON "safely" from Django to Javascript adds ' characters that can't be parse by the JSON.parse method

本文关键字:JSON 不能 方法 字符 添加 Django 安全 Javascript      更新时间:2023-09-26

我正在使用Django框架,我尝试将JSON列表传递给我的javascript。

我是这样做的:

在服务器端(Python/Django):

context['my_json_list'] = [{'aaa': 'rst', 'bbb': 'uvw'}, {'ccc': 'xyz'}]
return context

客户端:

在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()打印出:

[{&#39;aaa&#39;: &#39;rst&#39;, &#39;bbb&#39;: etc...

似乎不能被JSON"解析"。解析得到以下错误:

angular.js:11413 SyntaxError: Unexpected token & in JSON at position 2

这是做我想要什么正确的方式,如果是如何解决解析部分在js端?如果没有,我想要达到的目标的正确方法是什么?

JSON.parse(my_json_list);

JSON.parse()方法解析JSON字符串,构造字符串描述的JavaScript值或对象。

你没有传递一个字符串或有效的Json,所以方法失败。

这是无效的json。你应该检查jsonlint.com以确保你传递的json是有效的。这里的问题是它读取单引号&#39;是'的代码。你应该在json中使用双引号。

示例有效Json

{
    "my_list": [{
        "aaa": "rst",
        "bbb": "uvw"
    }, {
        "ccc": "xyz"
    }]
}
JSON

属性名必须是双引号字符串;后面的逗号是禁止的。