【问题标题】:Neo4j Java bolt driver: how to convert the result to Json?Neo4j Java 螺栓驱动程序:如何将结果转换为 Json?
【发布时间】:2016-10-04 02:09:36
【问题描述】:

我正在使用 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...

【问题讨论】:

    标签: java neo4j neo4j-bolt


    【解决方案1】:

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

    【讨论】:

    【解决方案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();
    

    【讨论】:

    • 谢谢!有点困惑。在测试中我使用的是嵌入式版本。但是如何使用螺栓版本进行内存测试(new TestGraphDatabaseFactory().newImpermanentDatabase())?
    • 我在这里得到了答案:stackoverflow.com/questions/37628313/….
    • 嗯,它看起来不像你的解决方案。我觉得有点失落:(
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    相关资源
    最近更新 更多