2017-04-17 116 views
1

我是新来的斯卡拉。我正在构建一个REST-API来查询几个服务,其中一个Neo4j,使用scala-2.11 我正在读取一个neo4j输出为StatementResult(org.neo4j.driver.v1 public interface StatementResult extends Iterator), 这样:neo4j声明结果到斯卡拉json

val recordsList = session.run(queryNeo4j) 
println("recordsList:" +recordsList.list()) 

中的println给出了这样的输出:

recordsList:[Record<{n: node<6103>}>, Record<{n: node<6104>}>]

,并试图将其转换成JSON的响应发送,使用播放JSON。 起初,我已经试过这样:

val recordJ = Json.parse(recordList) 

,但它不工作。 我也试过这样:

while (recordsList.hasNext()) { 
      val record = recordsList.next() 
      println("record: " +record) 
      val recordJ = Json.parse(record) 
     } 

但它不工作either.I得到这个错误:

error: overloaded method value parse with alternatives: 
    [INFO] (input: Array[Byte])play.api.libs.json.JsValue <and> 
    [INFO] (input: java.io.InputStream)play.api.libs.json.JsValue <and> 
    [INFO] (input: String)play.api.libs.json.JsValue 
    [INFO] cannot be applied to (org.neo4j.driver.v1.Record) 
    [INFO]   val recordJ = Json.parse(record) 
    [INFO] 

可能有人请帮助我获得与recordsList一个JSON?

谢谢

回答

0

最简单的方法是将语句结果转换为对象的深层列表。

val data = result.list(_.asMap())

,然后格式化JSON作为结果。

请参阅每种方法的javadocs。

+0

您好,我有这个错误与您的解决方案:错误:值列表不是列表[org.neo4j.driver.v1.Record] [错误的成员] val data = recordsList.list(_。asMap() – jsonH

+0

我的代码: val recordsList = Neo4jGraph.getGraph(label,session) val data = recordsList.list(_ .asMap()) – jsonH