0

我不知道是否有办法在Map[Symbol,Any]usingplay.api.libs.json库中转换 JSON 片段(作为字符串),其中Any可能是 a Int、 a Double、 aString或嵌套的Map[Symbol,Any]

任何人都可以给我一个提示来得到这个吗?

4

1 回答 1

3

JsObject.fieldSet会给你一个Set[(String, JsValue)]你可以转换成的Map[Symbol, Any]。您必须对所有可能的子类进行模式匹配,JsValue并将每个子类转换为您想要的类型。

例如,像这样:

 Json.parse(text) match {

    case js: JsObject => 
      js.fieldSet.map { 
        case (key, value) => Symbol(key) -> transform(value) 
      }.toMap

    case x => throw new RuntimeException(s"Expected object json but got $text")
 }

 def transform(jsValue): Any = jsValue match {
    case JsNumber(value) => value.toDouble
    ...ect...
 }
于 2014-07-01T13:22:33.043 回答