414 votes

L'analyse d'une chaîne JSON en ruby

J'ai une chaîne que je veux analyser en ruby.

string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'

Est-il un moyen facile pour extraire les données?

629voto

Greg Points 15661

Cela ressemble à du Javascript Object Notation (JSON). Vous pouvez installer le json gem Ruby:

gem install json

Vous auriez besoin de la gemme dans votre code comme ceci:

require 'rubygems'
require 'json'

Ensuite, vous pouvez analyser votre chaîne JSON comme ceci:

JSON.parse(string)

Il y a aussi d'autres implémentations de JSON pour Ruby:

237voto

nevan king Points 46410

Juste pour prolonger les réponses ci-dessus un peu avec ce qu'il faut faire avec l'analyse de l'objet:

# JSON Parsing example
require "rubygems"
require "json"

string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
parsed = JSON.parse(string) # returns a hash

p parsed["desc"]["someKey"]
p parsed["main_item"]["stats"]["a"]

# Read JSON from a file, iterate over objects
file = open("shops.json")
json = file.read

parsed = JSON.parse(json)

parsed["shop"].each do |shop|
  p shop["id"]
end

17voto

keymone Points 3947

il ressemble à une chaîne JSON

vous pouvez utiliser un des nombreux JSON bibliothèques et c'est aussi simple que de faire

JSON.parse(string)

7voto

guy mograbi Points 2418

un peu en retard, mais je suis tombé sur quelque chose d'intéressant qui me semble importante à apporter.

Par accident, j'ai écrit ce code, et il semble fonctionner..

require 'yaml'
CONFIG_FILE = ENV['CONFIG_FILE'] # path to a JSON config file 
configs = YAML.load_file("#{CONFIG_FILE}")
puts configs['desc']['someKey']

J'ai été surpris de voir qu'il travaille depuis que je suis en utilisant le yaml bibliothèque, mais il fonctionne.

La raison pour laquelle il est important, c'est qu' yaml est intégré dans avec ruby - pas de gem install.

Je suis à l'aide de versions 1.8.x et 1.9.x - so json bibliothèque n'est pas intégré, mais il est en version 2.x.

Donc techniquement c'est le moyen le plus facile pour extraire les données dans la version antérieure à 2.0.

4voto

Justin Ethier Points 57486

Que les données dirait qu'il est au format JSON.

Vous pouvez utiliser cette JSON mise en œuvre de Ruby pour l'extraire.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X