JSON es directamente compatible con Ruby, y lo ha sido desde al menos Ruby v1.9.3, por lo que no es necesario instalar una gema a menos que esté usando algo más antiguo. Simplemente use require 'json'en su código.
También puede establecer la opción symbolize_names en true para obtener claves como símbolos. Ejemplo:JSON.parse(string, symbolize_names: true) #=> {key: :value}
Nando Sousa
31
JSON es directamente compatible con Ruby, y lo ha sido desde al menos Ruby v1.9.3, por lo que no es necesario instalar una gema a menos que esté usando algo más antiguo. Simplemente use require 'json'en su código.
El hombre de hojalata
212
Solo para extender un poco las respuestas sobre qué hacer con el objeto analizado:
# JSON Parsing example
require "rubygems"# don't need this if you're Ruby v1.9.3 or higher
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
@LinusAn porque JSON requiere comillas dobles alrededor de las cadenas. Vea la cadena en la definición JSON ( json.org ): "Una cadena es una secuencia de cero o más caracteres Unicode, entre comillas dobles, usando escapes de barra invertida".
endorama
1
En muchos casos, desea envolver JSON.parsedentro de un bloque de rescate JSON::ParserError.
johnml
JSON.parse("[#{value}]")[0]para evitar el errorA JSON text must at least contain two octets!
Rivenfall
39
A partir de Ruby v1.9.3 no necesita instalar ninguna Gema para analizar JSON, simplemente use require 'json':
require 'json'
en su código.Respuestas:
Esto se parece a la notación de objetos JavaScript (JSON) . Puede analizar JSON que reside en alguna variable, por ejemplo
json_string
, así:Si está utilizando un Ruby anterior, 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:
fuente
JSON.parse(string, symbolize_names: true) #=> {key: :value}
require 'json'
en su código.Solo para extender un poco las respuestas sobre qué hacer con el objeto analizado:
fuente
'{ "a": "bob" }'
es válida."{ 'a': 'bob' }"
no es.JSON.parse
dentro de un bloque de rescateJSON::ParserError
.JSON.parse("[#{value}]")[0]
para evitar el errorA JSON text must at least contain two octets!
A partir de Ruby v1.9.3 no necesita instalar ninguna Gema para analizar JSON, simplemente use
require 'json'
:Ver JSON en Ruby-Doc.
fuente
Parece una cadena JSON. Puede usar una de las muchas bibliotecas JSON y es tan simple como hacer:
fuente
Esto es un poco tarde, pero me encontré con algo interesante que parece importante para contribuir.
Accidentalmente escribí este código, y parece funcionar:
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 instalación de gemas.Estoy usando las versiones 1.8.xy 1.9.x, por lo que la
json
biblioteca no está integrada, pero está 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 la 2.0.
fuente
Parece que los datos están en formato JSON.
Puede usar esta implementación JSON para que Ruby la extraiga.
fuente
Sugiero Oj ya que es muuuucho más rápido que la biblioteca JSON estándar.
https://github.com/ohler55/oj
( ver comparaciones de rendimiento aquí )
fuente