Avantages de l'utilisation de l'application / json sur le texte / la plaine?

Existe-t-il un avantage de performance de l'utilisation du type de contenu application / json envoie un objet sérialisé à json sur le texte / la plaine? Je sais que de nombreux frameworks (comme Spring) peuvent cartographier et sérialiser des données en fonction du type de contenu, mais en général, je trouve que ce processus est assez simple pour que ce ne soit pas une raison impérieuse d'utiliser application / json sur le texte / la plaine pour les objets JSON .

Supposons que vous parlez d'utiliser JSON par rapport à un format personnalisé (en utilisant le type de text/plain MIME text/plain ) pour transmettre des données structurées.

Les performances peuvent être divisées en différents composants; par exemple

  • Temps relatif pris pour coder le contenu dans le format,
  • Temps relatif pour décoder le format pour vous donner le contenu original, et
  • Taille relative du contenu encodé.

En théorie, on peut dire qu'un format personnalisé hypothétique et conçu de manière optimale ne sera plus lent ou moins dense que JSON. (La "preuve" est évidente. Choisissez une implémentation optimale de JSON et modifiez de façon mineure le format qui n'affecte pas les performances.)

En réalité, vous devez comparer les performances des formats réels et des implémentations réelles. La réponse est donc que la performance dépend vraiment de la qualité du travail que vous faites en concevant et en mettant en œuvre le format et son logiciel de codage / décodage associé. En outre, cela dépend aussi de la façon dont vous implémentez JSON. Il existe un certain nombre de bibliothèques JSON côté serveur avec différentes caractéristiques de performance, ainsi que différentes façons de mapper des données de / vers des structures de données "natives".

Cela nous amène aux avantages réels de JSON (et XML) sur des formats personnalisés.

  • Avec JSON et XML, il existe des bibliothèques disponibles pour toute langue courante que vous choisissez d'utiliser pour faciliter le codage et le décodage du contenu. Avec un format personnalisé, vous devez rouler votre propre codage / décodage pour les côtés client et serveur.

  • Avec JSON et XML, il existe des normes qui disent ce qui est bien formé qui permet à d'autres personnes de mettre en place des encodeurs / décodeurs. Avec un format personnalisé, vous devez écrire la spécification vous-même si vous souhaitez que d'autres personnes puissent mettre en œuvre votre format.

  • JSON et XML ont des moyens standard de traiter des problèmes tels que l'encodage charset et les caractères "méta" apparaissant dans les données. Avec une coutume, vous devez comprendre et aborder ces problèmes vous-même. (Et si vous ne le faites pas, vous risquez de vous mettre en difficulté sur la piste).

  • Facilité de changement. Il est relativement simple d'évoluer un format basé sur JSON / XML. Mais avec un format personnalisé, vous avez (au moins) plus de travail à faire et, selon vos choix de conception, cela pourrait être très difficile.

Pour la plupart des applications, ces problèmes concernent beaucoup plus que les performances . Et c'est pourquoi JSON ou XML sont largement utilisés.

SUIVRE

Mais qu'est-ce-que si vous supposez que je n'utilise pas une implémentation personnalisée et que je compare l'envoi de JSON avec un type de texte mime à la mime type application / json?

Ensuite, la réponse est qu'il n'y a presque aucune différence de performance .

  • Vous économisez 6 octets dans l'en-tête de requête ou de réponse HTTP car la chaîne de type mime est plus courte, mais cela est négligeable pour les messages HTTP typiques dont les tailles sont mesurées en milliers d'octets.
  • L'utilisation d'un type de contenu "texte / plat" ne fait aucune différence dans le travail qui doit être effectué pour encoder / décoder les messages de demande ou de réponse … en dehors du temps pris pour comparer / copier 6 octets supplémentaires, ce qui est probablement trop petit mesurer.

En outre, l'utilisation d'un type MIME inexact est (sans doute) une violation des spécifications HTTP. Si tu fais ça:

  • Il est plus probable que le récepteur maltraitera la réponse; Par exemple, ne parvient pas à le décoder ou à le montrer dans une fenêtre de navigateur, et

  • Vous pouvez interrompre la négociation du type de contenu HTTP, en supposant que votre client ou serveur l'utilise.

Bref, je ne pense pas de bonnes raisons de le faire, et quelques bonnes raisons de ne pas le faire.

JSon est essentiellement un format de texte brut. En tant que tel, il ne peut pas être plus rapide que le meilleur format de texte brut. (Il pourrait être plus rapide qu'un format de texte brut mal choisi) JSon est utilisé car il facilite l'encodage et le décodage et est assez lisible par l'homme pour de nombreux types de données, en particulier complexes.

Si vous cherchez une alternative à laquelle vous utilisez maintenant, vous pouvez peut-être donner plus de détails sur les données que vous envoyez et nous pouvons proposer des solutions de rechange.

JSON finira par devenir le format largement accepté avec xml. L'acceptation de JSON augmente assez rapidement, ce qui en fait un choix plus intelligent sur le texte, en gardant l'avenir à l'esprit.

JSON sera probablement plus rapide en raison des optimisations majeures (code C) vers le moteur JSON. Par exemple, JSON.parse () de V8 est extrêmement rapide.

Voici la description de json.org (LOL) et je ne pourrais pas être plus d'accord:

JSON: l'alternative sans graisse à XML

Ici, vous trouvez qu'il existe des bibliothèques Json pour presque toutes les langues.

http://www.json.org/

Json est si facile avec Jquery http://api.jquery.com/jQuery.getJSON/

Un des meilleurs textes que j'ai trouvés sur Json http://ascherconsulting.com/what/are/the/advantages/of/using/json/

Étant donné que JSON a été conçu pour sérialiser et désorienter les données envoyées vers et depuis des applications JavaScript, les avantages d'utiliser JSON se rapportent aux avantages de JSON par rapport à d'autres moyens de sérialisation. Les moyens les plus connus de sérialiser des données pour la transmission vers et à partir d'applications actuellement sont XML. Pourtant, XML est un moyen de sérialisation assez lourd. Tout d'abord, l'expéditeur doit coder les données à sérialiser en fonction d'une définition de type de document que le destinataire comprend. Cela crée une grande quantité de rembourrage supplémentaire autour des données réelles, quelle que soit la DTD utilisée. Ainsi, la taille des documents XML est souvent assez importante par rapport à l'ensemble réel de valeurs qu'ils contiennent. Deuxièmement, le destinataire doit recevoir le flux de XML et décoder les données afin de mettre ces données en mémoire. En comparaison, la sérialisation des données à l'aide de JSON par l'expéditeur est relativement rapide et compacte car la structure de JSON reflète la structure des types de données de programmation standard et le mécanisme de codage n'ajoute que le nombre minimal de caractères requis pour indiquer la structure et la valeur de la Les données. Une fois que le destinataire reçoit les données sérialisées de JSON, le seul processus à effectuer consiste à évaluer le texte de la chaîne à l'aide de la fonction eval intégrée de JavaScript ou d'une fonction compatible dans une autre langue. L'autre comparaison standard est YAML, qui est capable de sérialiser des ensembles de données complexes sans compter sur une DTD et nécessite un analyseur plus simple à lire et à écrire que XML. Cependant, même les analyseurs YAML simplifiés nécessitent généralement plus de temps et générent de plus grands flux de données sérialisés que JSON.

D'autres avantages, les chaînes JSon formatées sont similaires javascript Object déclaration afin qu'ils permettent une analyse plus simple et plus rapide.

JSon string: {nom: valeur name2: valeur}

Très facile à transformer vers javascript Objet.