Sat, February 6, 2010
json-lib のテスト, groovy
couchdb のクライアント用コードをgroovyで書いていると、JSONを使いこなす 必要が生じたので作動確認用テストコードをメモ。
基本的には、http://json-lib.sourceforge.net/usage.html を見れば 使い方はわかると思いますが。
コード
ちょっとはまったのは、
- net.sf.json.JSONObject を println したときの出力
- net.sf.json.JSONObject を toString() して println したときの出力
が異なること。(以下のコードの テスト4 を参照)
それ以外は直感的に使える感じです。
import net.sf.json.*
import net.sf.json.groovy.*
// テスト1)
def obj = new JSONObject()
obj.put("JSON", "Hello")
obj.put("JSON2", "Hello, World!")
assert obj.toString() == '{"JSON":"Hello","JSON2":"Hello, World!"}'
// テスト2)
def array = new JSONArray()
array.add('hoge')
array.add('fuga')
array.add('bar')
assert array.toString() == '["hoge","fuga","bar"]'
// テスト3)
obj.put('array',array)
assert obj.toString() == '{"JSON":"Hello","JSON2":"Hello, World!","array":["hoge","fuga","bar"]}'
// テスト4) 文字列から JSONObject を生成
JSONObject jsonObj = JSONObject.fromObject( obj.toString() )
assert jsonObj.toString() == '{"JSON":"Hello","JSON2":"Hello, World!","array":["hoge","fuga","bar"]}'
def jsonObjAsString = jsonObj as String
assert jsonObjAsString == '[JSON:Hello, JSON2:Hello, World!, array:[hoge, fuga, bar]]'
// テスト5) テスト4と同じ ただし JsonSlurper版
def jsonObj2 = new JsonSlurper().parseText( obj.toString() )
assert jsonObj2.toString() == '{"JSON":"Hello","JSON2":"Hello, World!","array":["hoge","fuga","bar"]}'