Болт-драйвер Neo4j Java: как преобразовать результат в Json?

Я использую драйвер Java Bolt (1.0.1), и мне интересно, есть ли способ преобразовать результат в Json (возможно, такой же, как в REST API)?

Я пытался использовать gson таким образом:

Result r = null;
try ( Transaction tx = graphDb.beginTx() )
{
    r = graphDb.execute("MATCH...");
    tx.success();
} catch {...}

new Gson().toJson(result);

но что я получаю:

java.lang.StackOverflowError
    at com.google.gson.internal.$Gson$Types.canonicalize($Gson$Types.java:98)
    at com.google.gson.reflect.TypeToken.<init>(TypeToken.java:72)
    etc...

person Randomize    schedule 03.06.2016    source источник


Ответы (2)


Показанный вами API — это не Bolt-Driver, а встроенный Java-API.

В отвертке можно сделать

Driver driver = GraphDatabase.driver( "bolt://localhost", AuthTokens.basic( "neo4j", "neo4j" ) );
Session session = driver.session();

StatementResult result = session.run( "MATCH (a:Person) WHERE a.name = 'Arthur' RETURN a.name AS name, a.title AS title" );

while ( result.hasNext() ) {
    Record record = result.next();
    gson.toJson(record.asMap());
}
session.close();
driver.close();
person Michael Hunger    schedule 03.06.2016
comment
Благодарю вас! Немного запутался. В тесте я использую встроенную версию. Но как я могу использовать версию болта для теста в памяти (new TestGraphDatabaseFactory().newImpermanentDatabase())? - person Randomize; 04.06.2016
comment
У меня есть ответ здесь: stackoverflow.com/questions/37628313/. - person Randomize; 05.06.2016
comment
хм, это не похоже на ваше решение. Я чувствую себя немного потерянным :( - person Randomize; 05.06.2016

Я разрабатываю приложение во фляге, и мне нужно сделать то же самое, а затем получить его в ответ, но на Python. Я использую jsonify вместо gson. Какие-либо предложения??? Код прямо здесь:

@concepts_api.route('/concepts', methods=['GET'])
  def get_concepts_of_conceptgroup():
  try: 
      _json = request.json
      _group_name = _json['group_name']
      if _group_name  and request.method == 'GET':
          rows = concepts_service.get_concepts_of_conceptgroup(_group_name)
          resp = jsonify(rows)
          resp.status_code = 200
          return resp
    
      return not_found() 
  except:
      message = {
      'status': 500,
      'message': 'Error: Imposible to get concepts of conceptgroup.',
      }
      resp = jsonify(message)
      resp.status_code = 500
      return resp
person Luis Oviedo    schedule 27.11.2020
comment
создайте отдельный вопрос для него не ответ - person Randomize; 28.11.2020
comment
Вы пытались напрямую вернуть диктовку напрямую? return messge, 500. stackoverflow.com/a/45412576/260229 - person Mahmoud K.; 28.11.2020