Le revers de JSON.stringify?
Je suis stringyfing un objet comme {'foo': 'bar'}
Comment puis-je tourner la chaîne à un objet?
- Notez que
{foo: 'bar'}
n'est pas JSON valide (alors que c'est un javascript valide l'expression). - essayez simplement de JSON.l'analyser. si votre navigateur n'avons pas de soutien alors essayez json2.js
- les gars, nous sommes face à un lolcat ici.
- Je devrais peut-être ajouté un autre (lire la quatrième) réponse en disant que vous devriez faire JSON.analyser...
- s'avère que votre google lien de points à cette question que le top frappé. #ironie
- oui, après 5 mois de Google en le regardant! ;D
Vous devez vous connecter pour publier un commentaire.
Vous devez
JSON.parse()
la chaîne.JS:
JSON.parse
est à l'opposé deJSON.stringify
.JSON.stringify
etJSON.parse
sont presque oposites, et "généralement" ce genre de chose fonctionne:de sorte que obj et obj2 sont "les mêmes".
Cependant, il existe certaines limites à connaître.
Souvent, ces questions n'ont pas d'importance que vous avez à traiter avec des objets simples.
Mais je vais illustrer certains d'entre eux ici, à l'aide de cette fonction d'assistance:
Vous n'obtiendrez que des
ownProperties
de l'objet et de perdre des prototypes:Vous allez perdre de l'identité:
Fonctions de ne pas survivre:
Date d'objets finissent comme des chaînes de caractères:
Valeurs indéfinies ne pas survivre:
Des objets qui fournissent une
toJSON
fonction peut ne pas se comporter correctement.Je suis sûr qu'il ya des problèmes avec les autres construit-dans-les types de trop. (Tout cela a été testé à l'aide de node.js de sorte que vous pouvez obtenir légèrement différents comportements en fonction de votre environnement de trop).
Quand il n'importe, il peut parfois être surmontés à l'aide des paramètres additionnels de
JSON.parse
etJSON.stringify
. Par exemple:JSON SPEC
"JSON est un format texte qui est complètement indépendante de la langue, mais utilise les conventions qui sont familiers aux programmeurs de la C-une famille de langages, dont C, C++, C#, Java, JavaScript, Perl, Python, et bien d'autres.". Pour moi, cela dit que JSON doit être utilisé uniquement pour la langue agnostique et types de données. Par conséquent, votre exemple (bien que très valable) ne concerne que JSON dans son association à JavaScript, et devrait être plus soi-défini comme JSONP, et non pas de vrais JSON... IMO{ bar:"bar" }
(à partir de votre prototype) est pas considéré comme valide json depuisfoo
est une variable plutôt qu'une chaîne de caractères. Json valide les besoins de lakey
être unstring
.JSON.parse
. Je suis juste d'avertissement que theres beaucoup de cas qui ne se chargera pas correctement. Si vous utilisez pur de données primitifs (pas de classes, de prototypes) et seuls les types de données supportés par JSON (pas de dates, XML, HTML, etc ... ensuite, vous êtes OK.X = { foo:"bar" }
est le même queX = { "foo":"bar" }
qui est le même queX = {}; X.foo = "bar"
qui est le même queX={}; X["foo"] = "bar"
L'objet résultant est identique dans tous les 4 cas. Qui ne fait pas de différence pour la validité de l'généré JSON.jsonrepack(new Date(1,2,1990));
nijsonrepack(new Date(1990,2,1));
retourne'1990-02-01T16:00:00.000Z'
pour moi, mais'1906-08-10T22:00:00.000Z'
et'1990-02-28T23:00:00.000Z'
😛jsonrepack(new Date(1990,2,1));
et j'ai corrigé ça. La raison pour laquelle vous voyez une différence dans le résultat de cette affaire est le fuseau horaire que vous utilisez est différente de la mienne - etnew Date(1990,2,1)
est la date du 1er Février 1990, dans le fuseau horaire UTC.Est recommandé d'utiliser
JSON.parse
Il y a une alternative que vous pouvez faire :
Json en javascript
Pourquoi utiliser le JavaScript de la fonction eval une mauvaise idée?
http://jsbin.com/tidob/1/edit?js,console,sortie
Le natif de l'objet JSON comprend deux principales méthodes.
La
JSON.parse()
méthode d'analyse une chaîne JSON - c'est à dire la reconstruction de l'original de l'objet JavaScriptvar jsObject = JSON.parse(jsonString);
JSON.stringify() la méthode accepte un objet JavaScript et retourne son JSON équivalent.
var jsonString = JSON.stringify(jsObject);
Comment à ce sujet
C'est une alternative plus sûre pour
eval
.JS:
Vérifier cela.
http://jsfiddle.net/LD55x/
Code: