Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用import play.api.libs.JSON将任何JSON字符串转换为映射[Symbol,any]?_Json_Scala_Playframework 2.3 - Fatal编程技术网

如何使用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,但我面临的特定场景非常适合这种方法。