2015-07-04 22 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