尽管已经有很多关于这个话题的问题,但我不想再开一个新问题,但我真的不知道为什么这不起作用。
我正在尝试使用以下代码创建JSON对象:
var p = JSON.stringify(decodeJSON('{{post.as_json}}'))
var post = JSON.parse(p);
console.log(post); // Debug log to test if code is valid
而且 decodeJSON
函数:
function decodeJSON(json) {
var txt = document.createElement("textarea");
txt.innerHTML = json;
return txt.value.replace(/u'/g, "'");
}
console.log(post)
返回以下JSON字符串:
{'content': 'kj fasf', 'uid': '4eL1BQ__', 'created': '07/09/2017', 'replies': [], 'tags': ['python'], 'by': {'username': 'Dorian', 'img_url': '/static/imgs/user_Dorian/beaut.jpg'}, 'likes': 0}
浏览过该字符串后,我确信JSON格式是正确的,没有语法错误。然而,在运行JSON.parse(p)
时,我收到的不是一个对象,而是一个字符串。这可能是什么原因呢?
"
, 而不是单引号'
。 - baaovar post = {{post.as_json}};
即可完成。不过,这需要假设as_json
方法确实返回的是 JSON 数据,但似乎并非如此。您应该首先修复这个问题。其他所有的代码都只是一些 hacky 的解决方案。 - Felix Kling'
,我使用decodeJSON
后处理来删除它们。 - Dorian Dore