対象:
CRuby
JRuby

JSONライブラリによるJSONとRubyオブジェクトの相互変換

JSONのgemを入れればJSONとRubyオブジェクトの相互変換が可能になる。JRubyの場合はjson-x.x.x-java、普通のRuby(1.8系)の場合はjson-x.x.xのgemを入れる必要がある。尚、1.9系のRubyは標準でjsonライブラリが利用できるので、gemを入れずともrequire "json"するだけで良い。

また、JSONライブラリでなく、Active Supportを利用する方法は以下のリンクを参照していただきたい。

Active SupportによるJSONとRubyオブジェクトの相互変換

JRubyの場合はgem install json -v 1.6.5コマンドを実行することでjson-1.6.5-javaがインストールされた。

# gem install json -v 1.6.5
Successfully installed json-1.6.5-java
1 gem installed
Installing ri documentation for json-1.6.5-java...
Installing RDoc documentation for json-1.6.5-java...

普通のRubyの場合はgem install jsonコマンドを実行すればjson-1.6.5がインストールされた。

# gem install json
Building native extensions.  This could take a while...
Successfully installed json-1.6.5
1 gem installed
Installing ri documentation for json-1.6.5...
Installing RDoc documentation for json-1.6.5...

JSONからRubyオブジェクトに変換するのがJSON.parseメソッド、RubyオブジェクトからJSONに変換するのがJSON.generateメソッドである。

require "rubygems"
require "json"

# JSONからRubyオブジェクトに変換
ruby_array = JSON.parse("[1, 2, 3]")
ruby_hash = JSON.parse('{"CPU": "Core i7", "Memory": 8, "HDD": 500}')
p ruby_array
p ruby_hash

# RubyオブジェクトからJSONに変換
json_array = JSON.generate(ruby_array)
json_hash = JSON.generate(ruby_hash)
p json_array
p json_hash

このコードの実行結果は以下である。

[1, 2, 3]
{"CPU"=>"Core i7", "Memory"=>8, "HDD"=>500}
"[1,2,3]"
"{\"CPU\":\"Core i7\",\"Memory\":8,\"HDD\":500}"

また、ArrayやHashに対してto_jsonメソッドを使用することもできる。

# to_jsonメソッドでJSONに変換
json_array = ruby_array.to_json
json_hash = ruby_hash.to_json
(2012/03/24)

新着情報
【iOS Objective-C, Swift Tips】画像の向きを指定して保存する(Swift)
【iOS Objective-C, Swift Tips】UIImagePickerControllerの表示を日本語にする(Swift)
【iOS Objective-C, Swift Tips】ウィンドウの階層構造を3D表示する(Swift)

Copyright(C) 2004-2014 モバイル開発系(K) All rights reserved.
[Home]