如何使用import play.api.libs.JSON将任何JSON字符串转换为映射[Symbol,any]?
我不知道是否有一种方法可以使用如何使用import play.api.libs.JSON将任何JSON字符串转换为映射[Symbol,any]?,json,scala,playframework-2.3,Json,Scala,Playframework 2.3,我不知道是否有一种方法可以使用play.api.libs.JSON库在Map[Symbol,Any]中转换JSON片段(作为字符串),其中Any可以是Int、Double、String或嵌套的Map[Symbol,Any]/code> 有人能给我一个提示吗?JsObject.fieldSet会给你一个集合[(字符串,JsValue)],你可以把它转换成映射[Symbol,Any]。您必须对JsValue的所有可能子类进行模式匹配,并将每个子类转换为您想要的类型 例如,类似这样的内容: Json
play.api.libs.JSON
库在Map[Symbol,Any]
中转换JSON片段(作为字符串),其中Any
可以是Int
、Double
、String
或嵌套的Map[Symbol,Any]/code>
有人能给我一个提示吗?JsObject.fieldSet
会给你一个集合[(字符串,JsValue)]
,你可以把它转换成映射[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...
}
JsObject.fieldSet
将为您提供一个集合[(字符串,JsValue)]
,您可以将其转换为映射[符号,任意]
。您必须对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...
}
JsObject.fieldSet
将为您提供一个集合[(字符串,JsValue)]
,您可以将其转换为映射[符号,任意]
。您必须对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...
}
JsObject.fieldSet
将为您提供一个集合[(字符串,JsValue)]
,您可以将其转换为映射[符号,任意]
。您必须对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...
}
这是可能的,但有很多更好的方法可以在游戏中使用JSON。我知道Travis,但我面临的特定场景非常适合这种方法。这是可能的,但有很多更好的方法可以在游戏中使用JSON。我知道Travis,但我面临的特定场景非常适合这种方法。这是可能的,但是有很多更好的方法可以在游戏中使用JSON。我知道Travis,但我面临的特定场景非常适合这种方法。这是可能的,但有很多更好的方法可以在游戏中使用JSON。我知道Travis,但我面临的特定场景非常适合这种方法。