我无法确定是否有方法在使用play.api.libs.json
库的Map[Symbol,Any]
中转换JSON片段(作为字符串),其中Any
可能是Int
, Double
, String
或嵌套的Map[Symbol,Any]
。
有谁能给我点提示吗?
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...
}