JSON字符串我有,我想在Ruby中解析字符串:解析在Ruby中
string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
有沒有一種簡單的方法來提取數據?
JSON字符串我有,我想在Ruby中解析字符串:解析在Ruby中
string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
有沒有一種簡單的方法來提取數據?
這看起來像Javascript Object Notation (JSON)。您可以安裝JSON gem for Ruby:
gem install json
你會需要像這樣在你的代碼寶石:
require 'rubygems'
require 'json'
然後你可以分析你的JSON字符串是這樣的:
JSON.parse(string)
有爲Ruby JSON的還有其他的實現:
也可以將選項symbolize_names設置爲true,以便將鍵作爲符號。例如:'JSON.parse(string,symbolize_names:true)#=> {key::value}' – 2014-04-02 00:25:22
_JSON在Ruby中直接支持,並且至少從Ruby v1.9.3開始,因此不需要安裝寶石,除非你使用的東西比較老。只需在您的代碼中使用'require'json''. – 2015-11-09 17:44:48
它看起來像一個JSON字符串。您可以使用許多JSON庫中的一個,就像在做:
JSON.parse(string)
這數據看起來是JSON格式。
您可以使用此JSON implementation for Ruby來提取它。
好的網站可以很好地解釋[JSON](http://jsonlint.com/) – 2013-07-30 19:28:09
只是延長了答案有點什麼與解析的對象做:
# 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
這是有點晚了,但我遇到了一些有趣的事情,似乎重要的貢獻。
我不小心寫了這個代碼,似乎工作:
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,所以沒有創業板安裝。
我正在使用版本1.8.x和1.9.x - 所以json
庫不內置,但它是在版本2.x.
從技術上講 - 這是提取低於2.0版本數據的最簡單方法。
是的,JSON實際上是由Psych代碼解析的,它也解析Ruby中的YAML。 JSON解析在[Ruby v1.9.3]中引入(http://ruby-doc.org/stdlib-1.9.3/libdoc/json/rdoc/index.html)。 – 2015-11-09 17:42:21
這個工作的原因是語義上(大多數)JSON是有效的YAML(特別是YAML 1.2) – 2016-07-18 23:05:30
截至Ruby v1.9。3,你不需要爲了解析JSON安裝任何寶石,只需使用require 'json'
:
require 'json'
json = JSON.parse '{"foo":"bar", "ping":"pong"}'
puts json['foo'] # prints "bar"
在Ruby的文件見JSON。
_JSON在Ruby中直接支持,至少從Ruby v1.9.3開始,所以不需要安裝gem,除非您使用的是舊版本。只需在代碼中使用'require'json''. – 2015-11-09 17:41:17