2017-04-17 84 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