2011-01-02 5 views
2

J'ai une valeur de chaîne au format '{"apple":30,"orange":50}'. Comment puis-je le convertir en un objet javascript formatComment convertir une chaîne en un objet

{apple: 30, orange: 50} 

Pour que je puisse obtenir la valeur pour apple en utilisant object.apple.

+0

double possible de [sérialisation JSON dans jQuery] (http://stackoverflow.com/questions/191881/serializing-to-json-in-jquery) – outis

Répondre

7

Vous pouvez résoudre ce problème par plusieurs méthodes, mais je préfère utiliser une bibliothèque comme le JSON library de Mr. Douglas Crockford.

Si vous utilisez la bibliothèque, il est aussi simple que

var object = JSON.parse('{"apple":30,"orange":50}') 
alert(object.apple) // will alert 30 

La façon la plus dangereuse et laid est d'utiliser la fonction eval().

eval('object={"apple":30,"orange":50}') 
alert(object.apple) // will alert 30 

N'utilisez jamais ceci.

Le site json.org contient des références à plusieurs bibliothèques json dans différentes langues. Javascript specific information peut être trouvé here.

+4

+1 Crockford fait fournit maintenant trois bibliothèques d'analyse différentes en fonction de vos préférences, qui peuvent toutes être trouvées [ici] (https://github.com/douglascrockford/JSON-js/) * (c'est un lien; Stoopid StackOverflow ne soulignant pas les liens) *. Il y a le 'json2.js' d'origine, qui utilise' eval' sous les couvertures mais fait des vérifications pour voir si ça a l'air correct, et deux options qui n'utilisent pas 'eval':' json_parse.js' qui utilise un analyseur récursif-descendant, et 'json_parse_state.js' qui utilise une machine d'état. Une sélection de choix! –

+0

FYI, de nombreux navigateurs modernes ont un objet 'JSON' intégré. – Eric

+0

@Eric, mais la bonne partie est que 'json2.js' ne l'écrasera pas, et l'API native a été délibérément rendue compatible. –

Questions connexes