Maison >interface Web >js tutoriel >Cross-Browser JSON Serialization en JavaScript
var obj1 = { b1: true, s1: "text string", n1: 12345, n2: null, n3: undefined, a1: [ 1,1,2,3,5,8, [13, 21, 34] ], o1: { a: [3, 2, 1], b: { c: 42, d: [ 3.14, 1.618 ] } } };Nous pouvons accéder à toutes les propriétés de l'objet de diverses manières:
obj1.s1; // returns "text string" obj1["n1"]; // returns 12345 obj1.a1[6][1]; // returns 21 obj1["o1"]["b"]["c"]; // returns 42Cet objet peut également être transmis aux fonctions et méthodes JavaScript plutôt que de spécifier des arguments individuels. Des trucs utiles. Cependant, que se passe-t-il si nous devons stocker cet objet dans un cookie? Et si nous devons transmettre l'objet à un service Web via une demande AJAX? Et si ce service Web souhaite renvoyer une version modifiée de l'objet? La réponse est la sérialisation:
var JSON = JSON || {};Le code JSON.Stringify est un peu plus complexe:
// implement JSON.stringify serialization JSON.stringify = JSON.stringify || function (obj) { var t = typeof (obj); if (t != "object" || obj === null) { // simple data type if (t == "string") obj = '"'+obj+'"'; return String(obj); } else { // recurse array or object var n, v, json = [], arr = (obj && obj.constructor == Array); for (n in obj) { v = obj[n]; t = typeof(v); if (t == "string") v = '"'+v+'"'; else if (t == "object" && v !== null) v = JSON.stringify(v); json.push((arr ? "" : '"' + n + '":') + String(v)); } return (arr ? "[" : "{") + String(json) + (arr ? "]" : "}"); } };Si JSON.Stringify n'est pas disponible, nous définissons une nouvelle fonction qui accepte un seul paramètre OBJ. Le paramètre peut être une valeur unique, un tableau ou un objet complexe tel que Obj1 ci-dessus. Le code examine le type d'objet. Les valeurs uniques sont renvoyées immédiatement et seules les chaînes sont modifiées pour mettre des devis autour de la valeur. Si un tableau ou un objet est passé, le code itère via chaque propriété:
var obj1 = { b1: true, s1: "text string", n1: 12345, n2: null, n3: undefined, a1: [ 1,1,2,3,5,8, [13, 21, 34] ], o1: { a: [3, 2, 1], b: { c: 42, d: [ 3.14, 1.618 ] } } };Cela convertit une chaîne JSON en un objet utilisant EVAL (). Avant de vous précipiter pour implémenter les fonctions de sérialisation JSON dans tous vos projets, il y a quelques gatchas:
La sérialisation JSON dans JavaScript est le processus de conversion des objets JavaScript en un format de chaîne JSON. Cela se fait à l'aide de la méthode json.stringify (). La chaîne JSON résultante peut être stockée ou envoyée à un serveur. Il s'agit d'un processus crucial dans le développement Web car il permet de transférer facilement les données entre le client et le serveur.
JSON.Stringify () est une méthode en javascript qui convertit un objet JavaScript en une chaîne JSON. Voici un exemple simple:
Laissez obj = {nom: "John", Âge: 30, ville: "New York"};
Laissez myjson = json.stringify (obj);
console.log (myjson);
Dans cet exemple, l'objet Javascript "est converti dans une json json en utilisant json.striffify. «Myjson».
Oui, vous pouvez sérialiser les tableaux en javascript à l'aide de la méthode json.stringify (). Cette méthode fonctionne non seulement avec des tableaux simples, mais aussi avec des tableaux d'objets. Voici un exemple:
Soit arr = [1, 2, 3, 4];
que Myjson = json.Strifify (arr);
console.log (myjson);
dans cet exemple, le Array "arr" est converti en une chaîne JSON.
La désérialisation est le processus de conversion d'une chaîne JSON en un objet JavaScript. Cela se fait à l'aide de la méthode JSON.Parse (). Voici un exemple:
LET MYJSON = '{"Name": "John", "Age": 30, "City": "New York"}';
LET OBJ = JSON.Parse (Myjson);
Console.Log (obj);
Dans cet exemple, la chaîne JSON ‘Myjson’ est converti dans le retour dans un javascrip JSON.Parse ().
Si vous essayez de sérialiser une fonction en javascript à l'aide de JSON.StriNify (), la fonction sera ignorée et n'apparaîtra pas dans la chaîne JSON résultant. En effet, JSON est un format de données et ne prend pas en charge les capacités d'exécution de JavaScript.
Oui, vous pouvez personnaliser le processus de sérialisation dans JavaScript en utilisant une fonction de remplacement ou un tableau de remplacement comme deuxième argument à JSON.Strinify (). Cela vous permet de filtrer les valeurs ou de les modifier pendant le processus de sérialisation.
La jolie imprimée est un moyen de formater la chaîne JSON résultante de manière plus lisible. Cela se fait en fournissant un nombre comme troisième argument à json.stringify (), qui représente le nombre d'espaces à utiliser pour l'indentation.
Oui, mais cela nécessite des étapes supplémentaires. Par défaut, lorsque vous sérialisez un objet date dans JavaScript, il sera converti en une chaîne au format ISO. Lorsque vous le désérialisez, il ne sera pas automatiquement converti en un objet de date. Vous devrez le convertir manuellement à l'aide du nouveau constructeur Date ().
La méthode Tojson () en javascript est utilisée pour modifier le comportement de JSON.Strifify (). Lorsqu'un objet a une méthode TOJSON (), JSON.StRINGIFY () l'appelle et sérialise la valeur qu'il renvoie, au lieu de l'objet d'origine.
Oui, mais avec certaines limites. JavaScript peut représenter avec précision les nombres jusqu'à 2 ^ 53 - 1. Si vous avez besoin de sérialiser les plus grands nombres, vous devrez peut-être les convertir d'abord en chaînes pour éviter la perte de précision.
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!