我似乎找不到一种合适的方法将我的Map序列化为JSON对象,因为它的值有不同的类型,例如:
var user: Map[String, Any] = Map("name" -> "1", "id" -> 1)
val json: JsValue = Json.obj(
"user" -> user
)
生成:
type mismatch;
found : Map[String,Any]
required: play.api.libs.json.Json.JsValueWrapper
或者,如果我使用 Map[String,AnyVal]
,它会产生以下结果:
the result type of an implicit conversion must be more specific than AnyVal
但是如果我使用Map[String,Number]
或Map[String,String]
,它就可以工作。
我错过了什么,有没有一些包装器我可以调用来安全地在我的JSON.obj()调用中同时使用数字和整数?
case class User(props: Map[String, Any])
会让人感到困惑。为什么不指定User
的实际成员字段,如String
、Int
等,然后根据http://stackoverflow.com/questions/21714825/create-writes-and-format-of-case-class/定义一个`Writes[User]`呢? - Kevin Meredith