JSON est un bon moyen de transmettre des données complexes de mon code côté serveur JavaScript côté client. Par exemple, en PHP, je peux écrire:Est-ce en utilisant des constructions avancées (fonction, les nouveaux, les appels de fonction) en JSON sécurité?
<script type="text/javascript>
var MyComplexVariable = <?= BigFancyObjectGraph.GetJSON() ?>;
DoMagic(MyComplexVariable);
</script>
C'est assez cool, mais parfois vous voulez passer plus de la date de base, comme les dates ou même les définitions de fonction. Il existe un moyen simple et facile de le faire aussi, comme:
<script type="text/javascript>
var MyComplexVariable = {
'SimpleProperty' : 42,
'FunctionProperty' : function()
{
return 6*7;
},
'DateProperty' : new Date(989539200000),
'ArbitraryProperty' : GetTheMeaningOfLifeUniverseAndEverything()
};
DoMagic(MyComplexVariable);
</script>
Et cela fonctionne comme un charme sur tous les navigateurs, je l'ai vu jusqu'à présent. Mais selon JSON.org une telle syntaxe est invalide. D'autre part, j'ai vu cette syntaxe utilisée dans de très nombreux endroits, y compris certains frameworks JavaScript populaires. Alors ...
Puis-je attendre à des problèmes si j'utiliser les fonctions de JSON « non pris en charge » comme celle-ci? Pourquoi est-ce faux ou pas?
précisions Ajouté: Si je pensais mon JSON à consommer par un logiciel 3ème inconnu, ou même un analyseur connu qui n'a pas été un navigateur, alors ces espèces exotiques serait en effet très probablement pas travailler et je ne tenterait pas pour les intégrer. Mais je suis intéressé dans le cas où le code JSON est écrit directement dans un bloc de code JavaScript qui est exécuté par un navigateur Internet. Comme les exemples ci-dessus.
Si je l'ai utilisé seulement pour les données où l'analyseur cible serait très probablement pas un navigateur, alors je suis d'accord avec vous. Mais je pose la question sur le scénario où j'introduis le JavaScript directement dans mon code côté client JavaScript. Il sera exécuté par un navigateur. –