【发布时间】:2011-12-22 04:48:05
【问题描述】:
在 Django 模板中,我打印出如下数据:
P.place = '{{place.json|safe}}';
然后在 JavaScript 文件中,我会这样处理它:
place = JSON.parse(P.place);
这样的数据一切正常:
{"category": "Cars", "name": "Z"}
因为字符串看起来像这样:
P.place = '{"category": "Cars", "name": "Z"}'
所以,我可以使用 JSON.parse 方法解析它,该方法接受字符串作为输入。
问题是当我得到这样的数据时:
{"category": "Cars", "name": "Wojtek's Z"}
因为 JSON 解析器的输入字符串看起来像这样:
'{"category": "Cars", "name": "Wojtek'
我无法在 JSON 字符串中转义单引号,因为 JSON 字符串变得无效。出于同样的原因,我不能用双引号替换周围的引号并在 JSON 字符串中转义双引号。
我的解决方案是这样的:
在 HTML 模板中:
P.place = {{place.json|safe}};
然后在 JavaScript 中
var place = JSON.stringify(P.place);
place = JSON.parse(place);
它有效,但它不是最佳解决方案恕我直言。
如何更巧妙地解决这个问题?
【问题讨论】:
-
你必须在 JSON 中引用撇号,这是没有办法的。但通常你可以转义它,如果使用“\'”定义对象。或者,如果您愿意,可以使用 unicode 转义 \u0027(我认为)。
-
你不能那样做,看看 jsonlint.com 和 json.org
-
你不能做什么?查看 json 规范。
-
您不能引用单个撇号。第 2 行的解析错误: {"ff": "f\'f"} 所以我无法用你的提议解决我的问题。
标签: javascript json