Scala将JSON解析为Map替代

时间:2014-01-31 14:53:19

标签: java json scala pattern-matching

我正在寻找scala JSON.parseFull(jsonString)的替代品。 我正在使用scala JSON将jsonString转换为Map [String,Any],但有时将它转换为map需要太长时间,并从中构建一个java对象。 jsonString是一个很长的json响应。

你知道将jsonString转换为map [String,Any]的最快方法吗?所以我可以在那之后做patternMatching吗?

这里有一些代码与JSON.parseFull():

override def parse(in: String): ResponseObject = {

val json: Option[Any] = JSON.parseFull(in)
json match {
  case Some(value) =>
    val map: Map[String, Any] = value.asInstanceOf[Map[String, Any]]
    //json root
    val data: Map[String, Any] = map.get("data").get.asInstanceOf[Map[String, Any]]
    //populate PsmSearchResponse  
    val response: ResponseObject = new ResponseObject
    //mapping base properties
    response.setHash(data.get("hash").get.asInstanceOf[String])
    //call "transformToPsmItem" function to map each Searchitem
    val items: List[ResponseObjectItem] = data.get("items").get.asInstanceOf[List[Any]] map { itemParser.transformToResponseObjectItemItem }
    response.setItems(new ArrayList(items.asJavaCollection))

    //return complete PsmSearchResponse
    response

  case (None) => null
}

我也用lift-json试过这个,但是当我使用scala 2.10时,我无法使它工作。

val record = json.JsonParser.parse(json)
val json : Option[Any] = record.values.asInstanceOf[Map[String, Any]]

我收到有关我的scala版本(2.10)和json-lift版本不兼容的错误。

我想知道是否值得尝试图书馆并处理他们的问题只是为了获得一点时间改进...所以如果有人知道这些方法,请告诉我。

谢谢!

0 个答案:

没有答案