Ответы:
Это выглядит как JavaScript Object Notation (JSON) . Вы можете проанализировать JSON, который находится в некоторой переменной, например json_string
, так:
require 'json'
JSON.parse(json_string)
Если вы используете более старый Ruby, вам может потребоваться установить гем json .
Существуют также другие реализации JSON для Ruby, которые могут лучше соответствовать некоторым сценариям использования:
JSON.parse(string, symbolize_names: true) #=> {key: :value}
require 'json'
в своем коде.
Просто немного расширим ответы, что делать с анализируемым объектом:
# 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" }'
действует. "{ 'a': 'bob' }"
не является.
JSON.parse
в спасательный блок для JSON::ParserError
.
JSON.parse("[#{value}]")[0]
чтобы избежать ошибкиA JSON text must at least contain two octets!
Это немного поздно, но я столкнулся с чем-то интересным, что, кажется, важно внести свой вклад.
Я случайно написал этот код, и он, кажется, работает:
require 'yaml'
CONFIG_FILE = ENV['CONFIG_FILE'] # path to a JSON config file
configs = YAML.load_file("#{CONFIG_FILE}")
puts configs['desc']['someKey']
Я был удивлен, увидев, что это работает, так как я использую библиотеку YAML, но это работает.
Причина, почему это важно, заключается в том, что yaml
встроен в Ruby, поэтому установка gem отсутствует.
Я использую версии 1.8.x и 1.9.x - поэтому json
библиотека не встроена, но в версии 2.x.
Технически - это самый простой способ извлечь данные в версии ниже 2.0.
Эти данные выглядят как в формате JSON.
Вы можете использовать эту реализацию JSON для Ruby, чтобы извлечь ее.
Я предлагаю Oj, так как он работает быстрее, чем стандартная библиотека JSON.
Я создал один гем FastJsonparser, который быстрее, чем JSON.parse и Oj gem, попробуйте
require 'json'
в своем коде.