如何使用import play.api.lib . JSON转换任何JSON字符串到Map[Symbol, any]



我无法确定是否有方法在使用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...
 }

最新更新