Yanıtlar:
Bu, JavaScript Nesne Gösterimi'ne (JSON) benziyor . Örneğin json_string
, aşağıdaki gibi bazı değişkenlerde bulunan JSON'u ayrıştırabilirsiniz :
require 'json'
JSON.parse(json_string)
Eski bir Ruby kullanıyorsanız, json gem'i yüklemeniz gerekebilir .
JSON for Ruby'nin bazı kullanım durumlarına daha iyi uyabilecek başka uygulamaları da vardır:
JSON.parse(string, symbolize_names: true) #=> {key: :value}
require 'json'
Kodunuzda kullanın .
Yanıtları, ayrıştırılan nesne ile ne yapılacağıyla biraz genişletmek için:
# 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" }'
geçerlidir. "{ 'a': 'bob' }"
değil.
JSON.parse
bir kurtarma bloğunun içine sarmak istersiniz JSON::ParserError
.
JSON.parse("[#{value}]")[0]
önlemek içinA JSON text must at least contain two octets!
Bu biraz geç ama katkıda bulunmak önemli görünen ilginç bir şeyle karşılaştım.
Yanlışlıkla bu kodu yazdım ve işe yarıyor gibi görünüyor:
require 'yaml'
CONFIG_FILE = ENV['CONFIG_FILE'] # path to a JSON config file
configs = YAML.load_file("#{CONFIG_FILE}")
puts configs['desc']['someKey']
YAML kütüphanesini kullandığımdan beri işe yaradığını görünce şaşırdım, ama işe yarıyor.
Bunun önemli olmasının nedeni yaml
, Ruby ile yerleşik olması ve böylece gem yüklemesi olmamasıdır.
Sürüm 1.8.x ve 1.9.x kullanıyorum - bu yüzden json
kütüphane yerleşik değil, ama sürüm 2.x'te.
Bu yüzden teknik olarak - bu, 2.0'dan daha düşük sürümdeki verileri çıkarmanın en kolay yoludur.
Bu veriler JSON biçiminde gibi görünüyor.
Ruby için bu JSON uygulamasını kullanarak onu ayıklayabilirsiniz.
Standart JSON kütüphanesinden daha hızlı olduğu için Oj'yi öneririm.
require 'json'
Kodunuzda kullanın .