Java 使用Scala获取较低级别的JSON数据

Java 使用Scala获取较低级别的JSON数据,java,arrays,json,scala,json4s,Java,Arrays,Json,Scala,Json4s,我是Scala的初学者,我有如下格式的JSON数据: { "index_key": { "time":"12938473", "event_detail": { "event_name":"click", "location":"US" } } } 我正在尝试获取“index_key”的内容,并将第二级的内容提取为一个新的JSON对象,并基于第二级数据初始化一个类 { "ti

我是Scala的初学者,我有如下格式的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文档,还有$,但仍然没有完全理解,因为预定义的json似乎应该适合解析器


谁能告诉我如何获取json结构的第二级数据(或任何更低的级别)

您可以使用
\
获取要提取的对象:

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

您可以使用
\
获取要提取的对象:

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

您可以使用
\
获取要提取的对象:

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

您可以使用
\
获取要提取的对象:

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


这个JSON API最好使用专用的最新JSON库。为什么不
case-class-Wrapper(index\u-key:Event)
?哦……你说得对……我完全可以使用wapper类,非常感谢Rex。但我只是想知道,如果我只是想解析出json字符串的内部内容,该怎么办@RexKerrI将使用json4s,感谢heads up@cchantept。使用专用的最新JSON库会更好地反对JSON API。为什么不
case-class-Wrapper(index\u-key:Event)
?哦……你说得对……我肯定可以使用wapper类,非常感谢Rex。但我只是想知道,如果我只是想解析出json字符串的内部内容,该怎么办@RexKerrI将使用json4s,感谢heads up@cchantept。使用专用的最新JSON库会更好地反对JSON API。为什么不
case-class-Wrapper(index\u-key:Event)
?哦……你说得对……我肯定可以使用wapper类,非常感谢Rex。但我只是想知道,如果我只是想解析出json字符串的内部内容,该怎么办@RexKerrI将使用json4s,感谢heads up@cchantept。使用专用的最新JSON库会更好地反对JSON API。为什么不
case-class-Wrapper(index\u-key:Event)
?哦……你说得对……我肯定可以使用wapper类,非常感谢Rex。但我只是想知道,如果我只是想解析出json字符串的内部内容,该怎么办@RexKerrI将使用json4s,感谢@cchantephi@bjfletcher的提醒,这是另一个scala问题,如何将“index_key”作为变量?我正在尝试将它变成一种通用的json格式,并解析出所有的内部内容,但“index_key”可以是其他名称,如“index_key 2”、“index_key 3”。非常感谢:P
parse(str).as[JsObject].values.head
:)“:26:error:notfound:type JsObject”和“error:not-found:type的JSON反序列化程序。尝试为该类型实现一个隐式读取器或JsonFormat。”在parse(str)处。作为[JsObject]。我搜索了一下,发现应该安装“Play framework”吗?我现在只在控制台模式下使用json4s。非常感谢抱歉,一些关于JSON的问题飞来飞去,我忘记了这是json4s!:)json4s版本:
parse(str).as[JObject].children.head
hi@bjfletcher,这是另一个快速的scala问题,如何将“index_key”作为变量?我正在尝试将它变成一种通用的json格式,并解析出所有的内部内容,但“index_key”可以是其他名称,如“index_key 2”、“index_key 3”。非常感谢:P
parse(str).as[JsObject].values.head
:)“:26:error:notfound:type JsObject”和“error:not-found:type的JSON反序列化程序。尝试为该类型实现一个隐式读取器或JsonFormat。”在parse(str)处。作为[JsObject]。我搜索了一下,发现应该安装“Play framework”吗?我现在只在控制台模式下使用json4s。非常感谢抱歉,一些关于JSON的问题飞来飞去,我忘记了这是json4s!:)json4s版本:
parse(str).as[JObject].children.head
hi@bjfletcher,这是另一个快速的scala问题,如何将“index_key”作为变量?我正在尝试将它变成一种通用的json格式,并解析出所有的内部内容,但“index_key”可以是其他名称,如“index_key 2”、“index_key 3”。非常感谢:P
parse(str).as[JsObject].values.head
:)“:26:error:notfound:type JsObject”和“error:not-found:type的JSON反序列化程序。尝试为该类型实现一个隐式读取器或JsonFormat。”在parse(str)处。作为[JsObject]。我搜索了一下,发现应该安装“Play framework”吗?我现在只在控制台模式下使用json4s。非常感谢抱歉,一些关于JSON的问题飞来飞去,我忘记了这是json4s!:)json4s版本:
parse(str).as[JObject].children.head
hi@bjfletcher,这是另一个快速的scala问题,如何将“index_key”作为变量?我正在尝试将它变成一种通用的json格式,并解析出所有的内部内容,但“index_key”可以是其他名称,如“index_key 2”、“index_key 3”。非常感谢:P
parse(str).as[JsObject].values.head
:)“:26:error:notfound:type JsObject”和“error:not-found:type的JSON反序列化程序。尝试为该类型实现一个隐式读取器或JsonFormat。”在parse(str)处。作为[JsObject]。我搜索了一下,发现应该安装“Play framework”吗?我现在只在控制台模式下使用json4s。非常感谢抱歉,一些关于JSON的问题飞来飞去,我忘记了这是json4s!:)json4s版本:
parse(str).as[JObject].children.head