I have a string that I want to parse in Ruby:
string = \'{\"desc\":{\"someKey\":\"someValue\",\"anotherKey\":\"value\"},\"main_item\":{\"stats\":{\"a\":8,\"b\":12,\"c\":10}}}\'
Is there an easy way to extract the data?
I have a string that I want to parse in Ruby:
string = \'{\"desc\":{\"someKey\":\"someValue\",\"anotherKey\":\"value\"},\"main_item\":{\"stats\":{\"a\":8,\"b\":12,\"c\":10}}}\'
Is there an easy way to extract the data?
This looks like JavaScript Object Notation (JSON). You can parse JSON that resides in some variable, e.g. json_string
, like so:
require \'json\'
JSON.parse(json_string)
If you’re using an older Ruby, you may need to install the json gem.
There are also other implementations of JSON for Ruby that may fit some use-cases better:
Just to extend the answers a bit with what to do with the parsed object:
# 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
As of Ruby v1.9.3 you don\'t need to install any Gems in order to parse JSON, simply use require \'json\'
:
require \'json\'
json = JSON.parse \'{\"foo\":\"bar\", \"ping\":\"pong\"}\'
puts json[\'foo\'] # prints \"bar\"
See JSON at Ruby-Doc.
It looks like a JSON string. You can use one of many JSON libraries and it\'s as simple as doing:
JSON.parse(string)
This is a bit late but I ran into something interesting that seems important to contribute.
I accidentally wrote this code, and it seems to work:
require \'yaml\'
CONFIG_FILE = ENV[\'CONFIG_FILE\'] # path to a JSON config file
configs = YAML.load_file(\"#{CONFIG_FILE}\")
puts configs[\'desc\'][\'someKey\']
I was surprised to see it works since I am using the YAML library, but it works.
The reason why it is important is that yaml
comes built-in with Ruby so there\'s no gem install.
I am using versions 1.8.x and 1.9.x - so the json
library is not built in, but it is in version 2.x.
So technically - this is the easiest way to extract the data in version lower than 2.0.
That data looks like it is in JSON format.
You can use this JSON implementation for Ruby to extract it.
I suggest Oj as it is waaaaaay faster than the standard JSON library.
https://github.com/ohler55/oj
(see performance comparisons here)