J'ai un objet JSON contenant la valeur suivante:
@value = {"val":"test","val1":"test1","val2":"test2"}
Je veux le parcourir en Ruby pour obtenir les paires clé / valeur. Lorsque j'utilise @each
, il n'itère pas dans l'objet car il n'est pas sous la forme de hachage Ruby:
@value = {"val"=>"test","val1"=>"test1","val2"=>"test2"}
Comment puis-je convertir l'objet JSON ci-dessus en hachage Ruby?
value = '{"val":"test","val1":"test1","val2":"test2"}'
aurait pu être plus lisible.Vous pouvez également utiliser la
with_indifferent_access
méthode de Rails pour accéder au corps avec des symboles ou des chaînes.puis
la source
En supposant que vous ayez un hachage JSON quelque part, pour le convertir automatiquement en quelque chose comme la version de WarHog, enveloppez votre contenu de hachage JSON dans des
%q{hsh}
balises.Cela semble ajouter automatiquement tout le texte échappé nécessaire comme dans la réponse de WarHog.
la source
Avez-vous essayé: http://flori.github.com/json/ ?
À défaut, vous pourriez simplement l'analyser? Si ce ne sont que les tableaux qui vous intéressent, quelque chose pour séparer ce qui précède sera assez simple.
la source
Je suis surpris que personne n'ait signalé la
[]
méthode de JSON , ce qui rend très facile et transparent le décodage et l'encodage de / vers JSON.Considère ceci:
str
contient maintenant le JSON encodéhash
.Il est facile de l'inverser en utilisant:
Les objets personnalisés doivent être
to_s
définis pour la classe, et à l'intérieur de celui-ci convertissent l'objet en Hash puis l'utiliserto_json
.la source
Vous pouvez utiliser la gemme nice_hash: https://github.com/MarioRuiz/nice_hash
la source