Maison >interface Web >js tutoriel >Pourquoi jQuery.parseJSON génère-t-il une erreur « JSON invalide » lorsque des guillemets simples échappés sont présents ?

Pourquoi jQuery.parseJSON génère-t-il une erreur « JSON invalide » lorsque des guillemets simples échappés sont présents ?

DDD
DDDoriginal
2024-10-29 06:50:30732parcourir

Why Does jQuery.parseJSON Throw

jQuery.parseJSON renvoie une erreur "JSON invalide" en raison d'un guillemet unique échappé dans JSON

Problème :
Lors de l'utilisation de jQuery.post() pour récupérer des objets JSON à partir d'un serveur, l'analyse échoue si l'une des valeurs contient un guillemet simple échappé ('). Cela se produit même si la chaîne JSON est par ailleurs valide.

Raison :
Selon la spécification JSON, seuls les guillemets doubles échappés sont autorisés dans les chaînes, pas les guillemets simples. Les guillemets simples n'ont pas besoin d'être échappés conformément à la norme JSON.

Mise à jour :
Lors d'une discussion sur JSON dans "JavaScript : The Good Parts", Douglas Crockford, le créateur de JSON, a expliqué que la décision de n'autoriser que les guillemets doubles échappés a été prise pour simplifier l'interopérabilité. En exigeant l'utilisation de guillemets doubles uniquement, il élimine le risque de confusion et de terminaison accidentelle des chaînes.

Implications :
Cela signifie qu'il est impossible d'utiliser un guillemet simple dans une chaîne JSON pour terminer la chaîne par inadvertance. Par conséquent, l'échappement des guillemets simples n'est pas nécessaire dans la spécification JSON formelle.

Considérations sur la mise en œuvre :
Bien que la spécification JSON n'autorise pas les guillemets simples échappés, les implémentations bazı, telles que org .json pour Java, sont plus indulgents et permettent leur utilisation. Cependant, il est essentiel de noter que ce n'est pas la norme et que de nombreuses implémentations populaires, y compris celle utilisée par jQuery, adhèrent strictement à la spécification JSON officielle et rejettent les JSON contenant des chaînes entre guillemets simples et/ou des guillemets simples échappés.

Comportement jQuery.parseJSON :
jQuery.parseJSON s'appuie sur l'analyseur JSON sous-jacent fourni par le navigateur ou sur une bibliothèque chargée comme json2.js. Étant donné que ces implémentations sont généralement conformes à la spécification JSON, elles n'autorisent pas les guillemets simples échappés, et donc jQuery non plus.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn