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í:
require 'json'
JSON.parse(json_string)
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:
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:
# 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
'{ "a": "bob" }'
es válida. "{ 'a': 'bob' }"
no es.
JSON.parse
dentro de un bloque de rescate JSON::ParserError
.
JSON.parse("[#{value}]")[0]
para evitar el errorA JSON text must at least contain two octets!
Esto es un poco tarde, pero me encontré con algo interesante que parece importante para 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 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.
Parece que los datos están en formato JSON.
Puede usar esta implementación JSON para que Ruby la extraiga.
Sugiero Oj ya que es muuuucho más rápido que la biblioteca JSON estándar.
require 'json'
en su código.