2015-07-04 44 views
0

我斯卡拉的初學者,我已經格式化像下面JSON數據:使用斯卡拉得到JSON數據在較低水平

{ 
    "index_key": { 
     "time":"12938473", 
     "event_detail": { 
      "event_name":"click", 
      "location":"US" 
     } 
    } 
} 

我試圖讓「index_key」和的內容將第二級別的內容提取爲新的JSON對象,並根據第二級數據啓動一個類。

{ 
    "time":"12938473", 
    "event_detail": { 
     "event_name":"click", 
     "location":"US" 
    } 
} 

我試圖用json4s提取從上面的JSON是一個事件類,但如何擺脫「index_key」,這是第一個層次關鍵的?

case class Detail(event_name: String, location: String) 
case class Event(time: String, event_detail: Detail) 

json.extract[Event] 

我讀過json4s文檔,也http://www.scala-lang.org/api/2.10.3/index.html#scala.util.parsing.json.JSON $,但仍然沒有完全得到它,因爲它似乎是預先定義的JSON應該是適合的解析器?

任何人都可以請告訴我如何獲得json結構的二級數據(或任何較低級別)?

+0

這個JSON API已被棄用,最好使用專用的和跟上時代的JSON庫。 – cchantep

+0

爲什麼不'case class Wrapper(index_key:Event)'? –

+0

哦......你是對的......我可以肯定地使用一個wapper類,非常感謝雷克斯。但我只想知道如果我只是想解析出json字符串的內部內容呢? @RexKerr – keypoint

回答

3

您可以使用\去要提取的對象:

val json = parse(str) \ "index_key" 
json.extract[Event] 
+0

非常感謝你,正是我正在尋找的! @bjfletcher – keypoint

+0

嗨@bjfletcher,只是另一個快速scala問題,如何獲得「index_key」作爲變量?我試圖使它成爲一個通用的json格式並解析出所有內部內容,但「index_key」可能是其他一些名稱,如「index_key2」,「index_key3」。非常感謝:P – keypoint

+0

'parse(str).as [JsObject] .values.head' :) – bjfletcher