在Scala中表示Neo4j查询的嵌套参数



我试着用Map[String,Anyref]形式的参数运行Neo4j查询,它运行得很好。然而,我想以批的形式将数据发送到Neo4j,因此如果数据被转换,结果将是Map[String,Map[String,AnyRef]]或Map[String],AnyRef]。但总的来说,我想以这样的方式设置数据:

{
"nodes": [
{
"id": 193331567,
"lat": 40.7599983215332,
"lon": -73.98999786376953
},
{
"id": 173062762,
"lat": 41.959999084472656,
"lon": -87.66000366210938
},
{
"id": 66276172,
"lat": 40.72999954223633,
"lon": -74.01000213623047
}
]
}

我在Scala中使用嵌套映射编写了它,然而,当我将这个嵌套映射作为参数传递给查询时,Neo4j无法呈现它。那么,我如何在Scala中表示这种嵌套的JSON结构呢?我应该使用和Object还是类似的东西?

这是我设置的地图:

val paramsList = Map("nodes" -> {
data map { seq =>
Map(
"lat" -> seq(1).toDouble.asInstanceOf[AnyRef],
"lon" -> seq(2).toDouble.asInstanceOf[AnyRef],
"id" -> seq(0).toInt.asInstanceOf[AnyRef]
)
}}.asInstanceOf[AnyRef])
val queryResults = neo4jSession.run(neo4jQuery, params.asJava)

将两个映射都转换为java.util.Map非常重要,这样Neo4j就可以将这些数据作为参数传递。

val paramsList = data map { seq =>
Map(
"lat" -> seq(1).toDouble.asInstanceOf[AnyRef],
"lon" -> seq(2).toDouble.asInstanceOf[AnyRef],
"id" -> seq(0).toInt.asInstanceOf[AnyRef]
).asJava.asInstanceOf[AnyRef]
}
val queryResults = neo4jSession.run(neo4jQueries.searchQueryWithBatchParams, Map("nodes" -> paramsList.asJava.asInstanceOf[AnyRef]).asJava)

最新更新