parse ruby json

parse - ruby object to json



Analizando una cadena JSON en Ruby (7)

Tengo una cadena que quiero analizar en Ruby:

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

¿Hay una manera fácil de extraer los datos?


A partir de Ruby v1.9.3 no necesitas instalar ninguna gema para analizar JSON, simplemente usa require ''json'' :

require ''json'' json = JSON.parse ''{"foo":"bar", "ping":"pong"}'' puts json[''foo''] # prints "bar"

Ver JSON en Ruby-Doc.



Esto es un poco tarde, pero encontré algo interesante que parece importante contribuir.

Accidentalmente escribí este código, y parece funcionar:

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

Me sorprendió ver que funciona, ya que estoy usando la biblioteca YAML, pero funciona.

La razón por la que es importante es que yaml viene incorporado con Ruby, por lo que no hay una instalación de gemas.

Estoy usando las versiones 1.8.xy 1.9.x, por lo que la biblioteca json no está integrada, pero sí en la versión 2.x.

Técnicamente, esta es la forma más fácil de extraer los datos en una versión inferior a 2.0.


Esto se parece a la json.org . Puede analizar JSON que reside en alguna variable, por ejemplo, json_string , así:

require ''json'' JSON.parse(json_string)

Si está utilizando una versión anterior de Ruby, es posible que deba instalar la gema json .

También hay otras implementaciones de JSON para Ruby que pueden adaptarse mejor a algunos casos de uso:


Parece una cadena JSON. Puedes usar una de las muchas bibliotecas JSON y es tan simple como hacerlo:

JSON.parse(string)


Solo para ampliar un poco las respuestas con qué hacer con el objeto analizado:

# 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