我正在尝试将JSON解析为与JSON Inception一起使用的scala案例类,但之后我想将此对象保存到Mongo文档中。这适用于简单的字段,但我也有类似的东西:
{
...
"Things": [
"Key1": "123",
"Key2": "123" ]
...
}
等等......没有指定键,也没有指定键的数量。 在case类中,条目是map [String,String],如何轻松将其写入BSONDocument?我正在使用Play Framework 2.4和Reactivemongo。
答案 0 :(得分:0)
我认为这里有一些混乱。字段Things
不能像这样存在 - 它必须是JsObjects
的数组(用大括号表示),即
{
...
"Things": [
{
"Key1": "123",
"Key2": "123"
},
{
"Key1": "456",
"Key2": "456"
},
...
}
因此,您要映射到的任何案例类都应如下所示(以最简单的形式):
case class Things(Key1: String, Key2: String)
case class MyCaseClass(somethingHere: String, Things: Option[Things], somethingElse: Int)
object MyCaseClass {
implicit val thingsFormat: OFormat[Things] = Json.format[Things]
implicit val myCaseClassFormat: OFormat[MyCaseClass] = Json.format[MyCaseClass]
}
只需注意几个小事:
Int
,那么当然不要使用引号
标记,例如"Key1": "123"
是字符串 "Key1": 123
是 Int things
不是Things