我有一个字符串,我想在Ruby中解析:
string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
是否有一种简单的方法来提取数据?
我有一个字符串,我想在Ruby中解析:
string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
是否有一种简单的方法来提取数据?
当前回答
这有点晚了,但我遇到了一些有趣的东西,似乎很重要。
我不小心写了这段代码,它似乎可以工作:
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。因此json库不是内置的,但它在版本2.x中。
所以从技术上讲,这是在低于2.0的版本中提取数据的最简单的方法。
其他回答
这里没有任何回答提到直接解析哈希以外的对象,但是可以使用文档不完善的object_class选项(参见https://ruby-doc.org/stdlib-2.7.1/libdoc/json/rdoc/JSON.html):)
JSON.parse('{"foo":{"bar": 2}}', object_class: OpenStruct).foo.bar
=> 2
阅读该选项的更好方法是“json对象转换成的ruby类”,这解释了为什么它默认为Hash。同样,json数组也有一个array_class选项。
从Ruby v1.9.3开始,你不需要安装任何Gems来解析JSON,只需使用require ' JSON ':
require 'json'
json = JSON.parse '{"foo":"bar", "ping":"pong"}'
puts json['foo'] # prints "bar"
参见Ruby-Doc的JSON。
它看起来像一个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。
我使用的是1.8版本。X和1.9。因此json库不是内置的,但它在版本2.x中。
所以从技术上讲,这是在低于2.0的版本中提取数据的最简单的方法。
我建议使用Oj,因为它比标准JSON库快得多。
https://github.com/ohler55/oj
(点击这里查看性能比较)