Neo4JJavaBolt驱动程序:如何将结果转换为Json?

Neo4JJavaBolt驱动程序:如何将结果转换为Json?,java,neo4j,neo4j-bolt,Java,Neo4j,Neo4j Bolt,我正在使用JavaBolt驱动程序(1.0.1),我想知道有没有一种方法可以将结果转换为Json(可能与RESTAPI中的相同) 我试图以这种方式使用gson: Result r = null; try ( Transaction tx = graphDb.beginTx() ) { r = graphDb.execute("MATCH..."); tx.success(); } catch {...} new Gson().toJson(result); 但我得到的是: j

我正在使用JavaBolt驱动程序(1.0.1),我想知道有没有一种方法可以将结果转换为Json(可能与RESTAPI中的相同)

我试图以这种方式使用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...
java.lang.StackOverflower错误
在com.google.gson.internal.$gson$Types.canonicalize($gson$Types.java:98)
在com.google.gson.reflect.TypeToken上(TypeToken.java:72)
等

您展示的API不是螺栓驱动程序,而是嵌入式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();

您展示的API不是螺栓驱动程序,而是嵌入式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();

我正在flask中开发一个应用程序,需要做同样的事情,然后将其放入响应中,但使用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

我正在flask中开发一个应用程序,需要做同样的事情,然后将其放入响应中,但使用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

非常感谢。有点糊涂透了。在测试中,我使用的是嵌入式版本。但是我如何使用bolt版本进行内存测试(
newtestgraphdatabasefactory().newuncapanentdatabase()
)?我在这里得到了一个答案:。嗯,它看起来和我们的解决方案不一样。我觉得有点迷茫:(谢谢!有点困惑。在测试中,我使用的是嵌入式版本。但是我如何才能使用bolt版本进行内存测试(
new TestGraphDatabaseFactory()。NewNompanentDatabase()
)?我在这里得到了一个答案:。嗯,它看起来和我们的解决方案不一样。我觉得有点迷茫:(为它创建一个单独的问题而不是回答您是否尝试过直接返回dict?
返回消息,500
。为它创建一个单独的问题而不是回答您是否尝试过直接返回dict?
返回消息,500