将JSON数组传递给基于Neo4j服务器的java类的正确方法是什么?

时间:2014-09-27 20:33:59

标签: java json neo4j

我正试图将JSON数组中加载的数据成功传递给在Neo4j服务器上运行的java类。我的目的是将一个条目列表从客户端传递到服务器 - 这里没什么特别的。我正在做的是读取客户端上的条目,将这些条目加载到JSON对象中,然后将每个JSON对象放入一个JSON数组中,然后将其传递给服务器进行进一步处理。

以下是加载json对象和数组的客户端代码的一部分。注意:以下是 只是将json相关代码与try / catch以及驻留在代码中的其他项目一起剥离。

    JSONArray jsonArray = new JSONArray();
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("field1", field1Value1);
    jsonObject.put("field2", field2Value1);
    jsonObject.put("field3", field3Value1);
    jsonArray.put(jsonObject);

    JSONObject jsonObject = new JSONObject();
    jsonObject.put("field1", field1Value2);
    jsonObject.put("field2", field2Value2);
    jsonObject.put("field3", field3Value2);
    jsonArray.put(jsonObject);

这是处理等式的http post部分的客户端代码 - 我相信这没关系。

    StringEntity stringEntity = new StringEntity(jsonArray.toString());
    stringEntity.setContentType("application/json");
    HttpPost post = new HttpPost(
            "http://"server":7474/db/data/ext/serverSideClass/graphdb/processJSONData");
    post.setEntity(stringEntity);
    HTTPPostResponseResults httpResponse = new HTTPPostResponseResults();
    httpResponse.checkResponse(post);

这是服务器端代码的方法接口,这是我认为我的问题所在。我认为参数类型需要除JSONArray以外的其他东西,但我不确定是什么。

 @Name("processJSONData")
 @Description("process the data passed in.")
 @PluginTarget(GraphDatabaseService.class)
 public String processJSONData(@Source GraphDatabaseService graphDb,
        @Parameter(name = "jsonArray") JSONArray jsonArray) {

并且......这是错误被抛出。

   "message" : "java.util.ArrayList cannot be cast to java.util.Map",
    "exception" : "BadInputException",
   "fullname" : "org.neo4j.server.rest.repr.BadInputException",
   "stacktrace" : [ "org.neo4j.server.rest.repr.formats.JsonFormat.readMap(JsonFormat.java:92)",
   "org.neo4j.server.rest.repr.RepresentationFormat.readParameterList(RepresentationFormat.java:97)",
   "org.neo4j.server.rest.web.ExtensionService.invokeGraphDatabaseExtension

以上内容应涵盖与此帖子相关的项目。如果有任何需要澄清这一点,请告诉我,我会提供。提前谢谢。

0 个答案:

没有答案