Je détesterais ouvrir une nouvelle question même si de nombreuses questions ont été ouvertes sur ce même sujet, mais je suis littéralement à mes fins quant à savoir pourquoi ce n'est pas travail.JSON.parse() retourne une chaîne à la place de l'objet
Je cherche à créer un objet JSON avec le code suivant:
var p = JSON.stringify(decodeJSON('{{post.as_json}}'))
var post = JSON.parse(p);
console.log(post); // Debug log to test if code is valid
Et la fonction decodeJSON
:
function decodeJSON(json) {
var txt = document.createElement("textarea");
txt.innerHTML = json;
return txt.value.replace(/u'/g, "'");
}
console.log(post)
renvoie la chaîne JSON suivante:
{'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}
Après avoir parcouru la ficelle, je suis sûr que t Le JSON est valide et il n'y a pas d'erreurs de syntaxe. Cependant, lors de l'exécution JSON.parse(p)
Au lieu de recevoir un objet, je récupère une chaîne. Quelle pourrait-être la cause?
Ce n'est pas une chaîne JSON. JSON utilise '" ', pas' '' – baao
@baao Je pensais que cela pouvait aussi être la cause.J'ai donc essayé de remplacer tous les '' 'avec' "', mais j'ai alors une erreur 'Invalid token'. –
Il semble que vous utilisiez un moteur de template. Si oui, tout ce que vous avez à faire est 'var post = {{post.as_json}};' et appelez-le un jour. Cependant, cela suppose que 'as_json' renvoie vraiment JSON, ce qui ne semble pas être le cas. Vous devriez corriger cela en premier. Tout le reste est juste une solution de contournement hacky. –