Rubyで解析したい文字列があります。
string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
データを抽出する簡単な方法はありますか?
これは JavaScript Object Notation(JSON) のようになります。あなたはいくつかの変数に存在するJSONを解析することができます。 json_string
、こんな感じ:
require 'json'
JSON.parse(json_string)
古いRubyを使っているのなら、 json gem をインストールする必要があるかもしれません。
Ruby用のJSONの実装は他にもあります。
パースされたオブジェクトをどうするかで答えを少し拡張してください。
# 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を解析するためにGemをインストールする必要はありません。単にrequire 'json'
を使用してください。
require 'json'
json = JSON.parse '{"foo":"bar", "ping":"pong"}'
puts json['foo'] # prints "bar"
Ruby-Docの _ json _ を参照してください。
JSON文字列のように見えます。あなたは多くのJSONライブラリのうちの1つを使うことができ、それはするのと同じくらい簡単です:
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のインストールが行われないためです。
私はバージョン1.8.xおよび1.9.xを使用しています - それでjson
ライブラリは組み込まれていませんが、それはバージョン2.xにあります。
技術的には - これが2.0より前のバージョンでデータを抽出する最も簡単な方法です。
そのデータはJSON形式のように見えます。
これを抽出するには、この JSON実装をRuby に使用します。