この同じトピックで多くの質問が開かれていますが、新しい質問を開くのは嫌ですが、なぜこれがどういうわけかはわかりませんワーキング。JSON.parse()はオブジェクトの代わりに文字列を返します
私は次のコードで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)
オブジェクトを受け取る代わりに、私は文字列を取得します。何が原因だろうか?
これはJSON文字列ではありません。 JSONは '' '' ''ではなく '' 'を使用しています – baao
@baaoそれも原因である可能性があると思ったので、' ''を '' ''に置き換えようとしました。 –
テンプレートエンジンを使用しているようです。はいの場合は、 'var post = {{post.as_json}};'を実行し、それを1日と呼びます。しかし、これは 'as_json'が本当にJSONを返すと仮定しています。最初に修正する必要があります。他のすべてはちょっとハックリな回避策です。 –