说我有一个对象:
{
"name": "joe",
"age": 60
}
如何将其解组为Map[String, String]
类型?
答案 0 :(得分:3)
JsObject
类的fields
参数为Map[String, JsValue]
。如果您需要Map[String, String]
,请使用mapValues
:
import spray.json._
import DefaultJsonProtocol._
val json =
"""{
"name": "joe",
"age": 60
}"""
val jsObj = json.parseJson.asJsObject // JsObject
val myMap: Map[String, String] = jsObj.fields.mapValues(_.toString)
println(myMap)
// Map(name -> "joe", age -> 60)
答案 1 :(得分:-1)
将其解组为map [string]字符串只会拥有该对象的第一个值。您可以使用map [string] interface {} {}来解组该对象。 示例:
package main
import (
"fmt"
"encoding/json"
)
func main() {
type user struct {
Name string
Age int
}
usr:=user{Name:"yog prakash",Age:24}
b,err:=json.Marshal(usr)
if err!=nil{
fmt.Println("error in marshal ",err)
}
m:= map[string]interface{}{}
err=json.Unmarshal(b,&m)
if err!=nil{
fmt.Println("error unmarshaling",err)
}
fmt.Println("age --> ",m["Age"])
fmt.Println("user map--> ",m)
}
输出
age --> 24
user map--> map[Name:yog prakash Age:24]