JSONオブジェクト

JSONオブジェクト

以下の文字列のjsonがあった場合を考える。
val text = """
     {
"key1": "value1",
       "key2": "value2",
       "key3": [{
  "key4": "value4",
         "key5": "value5"
}, {
  "key6": "value6",
         "key7": "value7"
}]
     }
"""
  • 文字列をJSONオブジェクトに変換する
val json = JsonParser.parse( text )

  • JSONオブジェクトを文字列に変換する
// lift 2.3以降
compact( render(json) )
// or
pretty( render(json) ) // みやすく表示

  • ケースクラスをJSON文字列に変換する
import net.liftweb.json.Serialization.write
write(CaseClass) 

  • 上記のJSONオブジェクトを作る
JObject(List[JField](
  JField("key1", JString("value1"))
  JField("key2", JString("value2"))
  JField("key3", JArray(
    JObject(List[JField](
      JField("key4", JString("value4"))
      JField("key5", JString("value5"))
    ) :: 
    JObject(List[JField](
      JField("key6", JString("value6"))
      JField("key7", JString("value7"))
    ) :: Nil
  ))
))

  • JSONオブジェクトの値を取得する
value2をJValueとして取得する
json \ "key2"
value2をStringとして受け取る
implicit val formats = DefaultFormats
(json \ "key2").extract[String]
key3をイテレートする
// lift 2.2 以前
(json \ "key3").children.head.children.foreach( k => {
  println( k \ "key6" )
})
// lift 2.3 以後
(json \ "key3").children.foreach( k => {
  println( k \ "key6" )
})



最終更新:2011年08月06日 15:20