我无法弄清楚是否有办法使用Map[Symbol,Any]
库在play.api.libs.json
中转换JSON片段(作为字符串),其中Any
可能是Int
},Double
,String
或嵌套Map[Symbol,Any]
。
有人能给我一个暗示吗?
答案 0 :(得分: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...
}