Разбор строки JSON в Ruby
У меня есть строка, которую я хочу разобрать в Ruby:
string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
есть ли простой способ извлечь данные?
7 ответов
это выглядит как JavaScript Object Notation (JSON). Вы можете проанализировать JSON, который находится в некоторой переменной, например json_string
, например:
require 'json'
JSON.parse(json_string)
Если вы используете более старый Ruby, вам может потребоваться установить в формате JSON.
существуют также другие реализации JSON для Ruby, которые могут лучше соответствовать некоторым вариантам использования:
просто чтобы немного расширить ответы с тем, что делать с анализируемым объектом:
# 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
по состоянию на Ruby v1.9.3 Вам не нужно устанавливать какие-либо драгоценные камни для разбора JSON, просто используйте require 'json'
:
require 'json'
json = JSON.parse '{"foo":"bar", "ping":"pong"}'
puts json['foo'] # prints "bar"
посмотреть в формате JSON в Ruby-Doc.
похоже на строку JSON. Вы можете использовать одну из многих библиотек JSON, и это так просто:
JSON.parse(string)
Это немного поздно, но я столкнулся с чем-то интересным, что кажется важным внести свой вклад.
я случайно написал этот код, и он, кажется, работает:
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 install.
Я использую версии 1.8.x и 1.9.х - так json
библиотека не встроена, но это в версии 2.х.
так технически-это самый простой способ извлечь данные в версии ниже 2.0.
эти данные выглядят как в формате JSON.
вы можете использовать этот реализация JSON для Ruby чтобы извлечь его.