我正试图将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
以上内容应涵盖与此帖子相关的项目。如果有任何需要澄清这一点,请告诉我,我会提供。提前谢谢。