在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实现来提取它。

我build议Oj因为它比标准的JSON库更快。

https://github.com/ohler55/oj

( 见这里的性能比较 )