436 votes

JSON : pourquoi les barres obliques sont-elles échappées ?

La raison de cette situation m'échappe.

JSON échappe à la barre oblique, de sorte qu'un hachage {a: "a/b/c"} est sérialisé comme {"a":"a\/b\/c"} au lieu de {"a":"a/b/c"} .

Pourquoi ?

4 votes

Pour information, je n'ai jamais vu de slashs avant échappés dans JSON, je viens de le remarquer avec la bibliothèque Java de code.google.com/p/json-simple

33 votes

PHP json_encode() échappe les barres obliques par défaut, mais l'option JSON_UNESCAPED_SLASHES option à partir de PHP 5.4.0 (mars 2012)

10 votes

Voici un code PHP qui n'échappe pas tous les slashs, seulement dans les cas suivants '</' : echo str_replace('</', '<\/', json_encode($obj, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES));

6voto

Peter Krauss Points 1888

Mauvais PHP !

El JSON_UNESCAPED_UNICODE|JSON_UNESCAPED_SLASHES doit être par défaut, et non une option (étrange)... Comment le dire aux développeurs php ?

El par défaut L'utilisation la plus fréquente, et les normes (actuelles) les plus utilisées comme UTF8. Combien de fragments de code PHP sur Github ou autre ont besoin de cette fonction exotique "incorporé dans le HTML" ?

3 votes

Bien dit ! Cependant, PHP promeut toutes ses erreurs bizarres dans le futur, pour ne pas casser les bugs communs précédents dans tous ces snippets PHP historiques corrompus qui se répandent partout dans le monde comme une peste. Ainsi, toutes les mauvaises décisions prises par PHP, c'est-à-dire presque toutes les décisions prises par PHP, deviennent la norme. Vous ne pouvez pas vous attendre à ce que les standards changent, c'est pourquoi chaque développeur PHP doit connaître et mettre en œuvre un nombre infini de solutions de contournement pour tous les bogues graves trouvés dans PHP. C'est là qu'intervient stackoverflow .

2 votes

Vous avez complètement tort. C'est dû à JavaScript. Comme indiqué ci-dessous. En JS '\/' === '/' retourne vrai. Je vous conseille de vous en tenir aux faits. La plupart des gens sont capables de s'accommoder de quelques noms de fonctions incohérents. Ce n'est pas parce que vous ne voyez pas plus loin que PHP est un mauvais outil.

1 votes

Bonjour @Cobolt, C'est une vieille question, je n'utilise pas PHP aujourd'hui... Mais, comme blog de discussion, le noyau est "Le défaut DOIT être l'utilisation la plus fréquente" La laideur consiste donc à ignorer cette "utilisation la plus fréquente" du comportement (également laid) de Javascript.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X