【发布时间】:2013-02-14 09:26:34
【问题描述】:
我从 MongoDB 返回的数据如下所示:
> db.foo.findOne()
[
{
"_id" : "some string",
"bar" : [
[
14960265,
0.5454545454545454
],
[
30680,
0.36363636363636365
],
[
12852625,
0.09090909090909091
]
],
}
]
bar 属性包含一个未知大小的列表,其中每个项目都是一个长度为 2 的列表,其中包含一个 Int 和一个 Double。在 Scala 中,我将其表示为 List[(Int, Double)]。
我将如何为这个结构编写模型以与 Salat 一起使用?
Salat 不做元组,所以我尝试了:
case class FooEntry(a: Int, b: Double)
case class Foo(_id: String, bar: List[FooEntry])
但是得到了:
java.lang.IllegalArgumentException: BasicBSONList 只能使用 数字键,不是:[a]
也试过了:
case class Foo(_id: String, sps: List[Any])
但是得到了:
java.lang.ClassCastException: com.mongodb.BasicDBList 无法强制转换 到 scala.collection.immutable.List
显然,数据可以以更好的形式存储,使用对象而不是长度为 2 的数组。但鉴于这就是我所拥有的,有没有一种使用 Salat 反序列化它的好方法?谢谢!
【问题讨论】:
标签: mongodb scala serialization casbah salat