Câu trả lời:
Điều này trông giống như ký hiệu đối tượng JavaScript (JSON) . Bạn có thể phân tích cú pháp JSON nằm trong một số biến, ví dụ json_string
như vậy:
require 'json'
JSON.parse(json_string)
Nếu bạn đang sử dụng Ruby cũ hơn, bạn có thể cần cài đặt đá quý json .
Ngoài ra còn có các triển khai JSON cho Ruby khác có thể phù hợp với một số trường hợp sử dụng hơn:
JSON.parse(string, symbolize_names: true) #=> {key: :value}
require 'json'
trong mã của bạn.
Chỉ cần mở rộng câu trả lời một chút với những gì cần làm với đối tượng được phân tích cú pháp:
# 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" }'
là hợp lệ. "{ 'a': 'bob' }"
không phải.
JSON.parse
trong một khối cứu hộ cho JSON::ParserError
.
JSON.parse("[#{value}]")[0]
để tránh những lỗiA JSON text must at least contain two octets!
Điều này hơi muộn nhưng tôi đã gặp phải một điều thú vị có vẻ quan trọng để đóng góp.
Tôi đã vô tình viết mã này và nó dường như hoạt động:
require 'yaml'
CONFIG_FILE = ENV['CONFIG_FILE'] # path to a JSON config file
configs = YAML.load_file("#{CONFIG_FILE}")
puts configs['desc']['someKey']
Tôi đã rất ngạc nhiên khi thấy nó hoạt động vì tôi đang sử dụng thư viện YAML, nhưng nó hoạt động.
Lý do tại sao điều quan trọng là yaml
được tích hợp sẵn với Ruby để không có cài đặt đá quý.
Tôi đang sử dụng phiên bản 1.8.x và 1.9.x - vì vậy json
thư viện không được tích hợp, nhưng nó ở phiên bản 2.x.
Về mặt kỹ thuật - đây là cách dễ nhất để trích xuất dữ liệu trong phiên bản thấp hơn 2.0.
Dữ liệu đó trông giống như ở định dạng JSON.
Bạn có thể sử dụng triển khai JSON này cho Ruby để giải nén nó.
Tôi đề nghị Oj vì nó nhanh hơn thư viện JSON tiêu chuẩn.
require 'json'
trong mã của bạn.