Je chausse un objet comme {'foo': 'bar'}
Comment puis-je retourner la chaîne en un objet?
javascript
json
object
thelolcat
la source
la source
{foo: 'bar'}
n'est pas un JSON valide (alors qu'il s'agit d'une expression javascript valide).Réponses:
Vous avez besoin de
JSON.parse()
la chaîne.la source
JSON.parse
est l'opposé deJSON.stringify
.la source
JSON.stringify
etJSON.parse
sont presque opposés, et "généralement" ce genre de chose fonctionnera:de sorte que obj et obj2 sont "identiques".
Cependant, il y a certaines limites à connaître. Souvent, ces problèmes n'ont pas d'importance car vous traitez avec des objets simples. Mais je vais illustrer certains d'entre eux ici, en utilisant cette fonction d'assistance:
Vous n'obtiendrez que
ownProperties
l'objet et perdrez des prototypes:Vous perdrez votre identité:
Les fonctions ne survivent pas:
Les objets de date finissent sous forme de chaînes:
Les valeurs indéfinies ne survivent pas:
Les objets qui fournissent une
toJSON
fonction peuvent ne pas se comporter correctement.Je suis sûr qu'il y a aussi des problèmes avec d'autres types intégrés. (Tout cela a été testé en utilisant node.js, vous pouvez donc obtenir un comportement légèrement différent en fonction de votre environnement également).
Lorsque cela est important, il peut parfois être surmonté en utilisant les paramètres supplémentaires de
JSON.parse
etJSON.stringify
. Par exemple:la source
JSON SPEC
{ bar:"bar" }
(à partir de votre prototype) n'est pas considéré comme un json valide car ilfoo
s'agit d'une variable plutôt que d'une chaîne. Un json valide doitkey
être unstring
.JSON.parse
. J'avertis juste qu'il y a beaucoup de cas qui ne seront pas traités correctement. Si vous utilisez des données primitives pures (pas de classes, prototypes) et uniquement les types de données pris en charge par JSON (pas de dates, XML, HTML, etc.), alors vous êtes OK.X = { foo:"bar" }
est le même que celuiX = { "foo":"bar" }
qui est le même que celuiX = {}; X.foo = "bar"
qui est le même que l'X={}; X["foo"] = "bar"
objet résultant est identique dans les 4 cas. Cela ne change rien à la validité du JSON généré.http://jsbin.com/tidob/1/edit?js,console,output
L'objet JSON natif comprend deux méthodes clés.
La
JSON.parse()
méthode analyse une chaîne JSON - c'est-à-dire la reconstruction de l'objet JavaScript d'originevar jsObject = JSON.parse(jsonString);
La méthode JSON.stringify () accepte un objet JavaScript et renvoie son équivalent JSON.
var jsonString = JSON.stringify(jsObject);
la source
Il est recommandé d'utiliser
JSON.parse
Il existe une alternative que vous pouvez faire:
Json en javascript
Pourquoi l'utilisation de la fonction d'évaluation JavaScript est-elle une mauvaise idée?
la source
Que dis-tu de ça
Il s'agit d'une alternative plus sûre pour
eval
.Afficher l'extrait de code
la source
Regarde ça.
http://jsfiddle.net/LD55x/
Code:
la source
la source