【发布时间】:2018-03-16 10:05:35
【问题描述】:
在Play Framework (2.6)中;我目前是 automatically mapping JSON 到 MongoDB 的案例类(使用 ReactiveMongo 0.12 和 JSON 集合)。我已经下载了一个数据集 (here) 并将其作为 集合 导入到 MongoDB 中,以便进行一些与 地理空间查询 相关的测试。然而,其中一个字段被称为“type”(快速浏览一下,您会看到这个here)所以我遇到了问题,因为这是 Scala 中的关键字。否则我会这样写:
case class Geometry(coordinates: List, type: String)
case class Neighborhood(_id: Option[BSONObjectID], geometry: Geometry, name: String)
非常感谢您在这里提出任何建议!
只是添加(感谢@MarioGalic);将 scala 关键字 声明为类参数名称似乎是通过反引号完成的,但我仍然在 Play 模板中输出这些关键字 时遇到问题。因此,如果我遍历每个文档,我可能会写这个(这会出错)。
@for(ngh <- neighborhoods){
<tr>
...
<td>@ngh.name</td>
<td>@ngh.geometry.`type`</td>
...
</tr>
}
没有反引号在此处不起作用,并且在 模板 中无法识别带有反引号。我在this referenced question/answer on the subject 中找不到任何其他格式,所以我仍然遇到问题。谢谢
抱歉,这对于做什么是显而易见的。在 case 类模型 中,只需定义一个具有不同名称的方法(与本示例中的“type”不同,但本质上是任何导致问题的 keyword:
case class Geometry(coordinates: List, `type`: String) {
def getType = `type`
}
然后在模板中调用这个:
@for(ngh <- neighborhoods){
<tr>
...
<td>@ngh.name</td>
<td>@ngh.geometry.getType</td>
...
</tr>
}
谢谢大家!
【问题讨论】:
标签: json mongodb scala playframework reactivemongo