在Ruby中parsingJSONstring
我有一个string,我想在Ruby中parsing:
string = '{"desc":{"someKey":"someValue","anotherKey":"value"},"main_item":{"stats":{"a":8,"b":12,"c":10}}}'
有没有简单的方法来提取数据?
这看起来像Javascript对象表示法(JSON) 。 你可以安装Ruby的JSON gem :
gem install json
你会需要像你这样的代码中的gem:
require 'rubygems' require 'json'
然后你可以像这样parsing你的JSONstring:
JSON.parse(string)
JSON还有其他的Ruby实现:
- Ruby的YAJL C绑定
- JSON ::stream
只是扩大答案一下,parsing对象该怎么做:
# 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开始,您不需要安装任何Gems来parsingJSON,只需使用require 'json'
:
require 'json' json = JSON.parse '{"foo":"bar", "ping":"pong"}' puts json['foo'] # prints "bar"
在Ruby-Doc中查看JSON 。
它看起来像一个JSONstring。 您可以使用许多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.x – 所以json
库不内置,但它是在版本2.x.
所以在技术上 – 这是提取低于2.0版本的数据的最简单的方法。
这些数据看起来像是JSON格式。
你可以使用这个Ruby的JSON实现来提取它。