2017-04-17 2 views
1

Ich bin neu in Scala. Ich baue eine REST-API zur Abfrage mehrerer Dienste, einer von ihnen Neo4j, mit scala-2.11 Ich lese eine neo4j Ausgabe als StatementResult (org.neo4j.driver.v1 öffentliche Schnittstelle StatementResult erweitert Iterator), auf diese Weise :neo4j StatementResult zu json in scala

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

die println gibt diese Ausgabe:

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

und versuchen, es in ein json zu konvertieren in der Antwort zu schicken, Play-json verwenden. Zuerst habe ich versucht, dies:

val recordJ = Json.parse(recordList) 

aber es funktioniert nicht. Ich habe dies auch versucht:

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

Aber es funktioniert nicht diesen Fehler either.I zu erhalten:

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] 

Könnte jemand bitte helfen Sie mir eine json mit dem recordsList zu bekommen?

Danke

Antwort

0

Der einfachste Weg, um die Aussage Ergebnis in eine tiefe Liste der Objekte zu drehen wäre.

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

und formatieren Sie das Ergebnis als JSON.

Siehe die Javadocs für jede Methode.

+0

Hallo, habe ich diesen Fehler mit Ihrer Lösung: Fehler: Werteliste ist kein Mitglied der Liste [org.neo4j.driver.v1.Record] [ERROR ] val data = recordsList.list (_. asMap() – jsonH

+0

Mein Code: val recordsList = Neo4jGraph.getGraph (Label, Sitzung) val data = recordsList.list (_. asMap()) – jsonH