Разбор строки JSON в Ruby

У меня есть строка, которую я хочу проанализировать в Ruby:

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

Есть ли простой способ извлечения данных?

Ответ 1

Это выглядит как Javascript Object Notation (JSON). Вы можете установить JSON gem для Ruby:

gem install json

Вам понадобится камень в вашем коде:

require 'rubygems'
require 'json'

Затем вы можете проанализировать строку JSON следующим образом:

JSON.parse(string)

Существуют также другие реализации JSON для Ruby:

Ответ 2

Просто чтобы немного расширить ответы на вопрос о том, что делать с анализируемым объектом:

# 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

Ответ 3

Как и Ruby v1.9.3, вам не нужно устанавливать какие-либо Gems для анализа JSON, просто используйте require 'json':

require 'json'

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

См. JSON в Ruby-Doc.

Ответ 4

Похоже на строку JSON. Вы можете использовать одну из многих библиотек JSON, и это так же просто:

JSON.parse(string)

Ответ 5

Это немного поздно, но я столкнулся с чем-то интересным, что, кажется, важно внести свой вклад.

Я случайно написал этот код и, похоже, работает:

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.

Ответ 6

Эти данные выглядят как в формате JSON.

Вы можете использовать эту JSON-реализацию для Ruby, чтобы извлечь ее.