我想我在解析这个 json 对象时遗漏了一些东西。我收到的输出格式如下:
{
"columns" : [ "type", "relation" ],
"data" : [ [ "SOURCE", {
"paged_traverse" : "localhost/db/data/node/26/paged/traverse/{returnType}{?pageSize,leaseTime}",
"outgoing_relationships" : "localhost/db/data/node/26/relationships/out",
"data" : {
"DATUM" : "December"
},
"all_typed_relationships" : "localhost/db/data/node/26/relationships/all/{-list|&|types}",
"traverse" : "localhost/db/data/node/26/traverse/{returnType}",
"self" : "localhost/db/data/node/26",
"all_relationships" : "localhost/db/data/node/26/relationships/all",
"property" : "localhost/db/data/node/26/properties/{key}",
"outgoing_typed_relationships" : "localhost/db/data/node/26/relationships/out/{-list|&|types}",
"properties" : "localhost/db/data/node/26/properties",
"incoming_relationships" : "localhost/db/data/node/26/relationships/in",
"incoming_typed_relationships" : "localhost/db/data/node/26/relationships/in/{-list|&|types}",
"extensions" : {
},
"create_relationship" : "localhost/db/data/node/26/relationships"
} ]]
}
我设法在 GSON 中正确解析了最里面的部分:
public class Data
{
private String paged;
private String out;
private Map<String, String> data;
...
}
但是当我提供全身时,我得到以下异常:
Exception in thread "main" com.google.gson.JsonParseException: The JsonDeserializer MapTypeAdapter failed to deserialize json object
{
"columns" : [ "type", "relation" ],
"data" : [ [ "SOURCE", {
"paged" : foo/{returnType}{?pageSize,leaseTime}",
"out" : "bar",
"data" : {
"DATUM" : "December"
}
} ],
[ "SOURCE", {
"paged" : "test/{returnType}{?pageSize,leaseTime}",
"out" : "baz",
"data" : {
"DATUM" : "Steve"
}
}
]
]
} given the type java.util.Map<java.lang.String, java.lang.String>
java:498) 在 com.google.gson.Gson.fromJson(Gson.java:467) 在 com.google.gson.Gson.fromJson(Gson.java:417) 在 com.google.gson.Gson.fromJson(Gson .java:389) 在 com.skyscraper.transformer.NodeTransformer.fromGson(NodeTransformer.java:24) 在 com.skyscraper.query.read.Retriever.queryNode(Retriever.java:128) 在 com.skyscraper.query.read。 Retriever.main(Retriever.java:67) 原因:java.lang.IllegalStateException:这不是 JSON 对象。在 com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:83) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:66) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:33 ) 在 com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51) ... 还有 14 个 467) 在 com.google.gson.Gson.fromJson(Gson.java:417) 在 com.google.gson.Gson.fromJson(Gson.java:389) 在 com.skyscraper.transformer.NodeTransformer.fromGson(NodeTransformer.java :24) at com.skyscraper.query.read.Retriever.queryNode(Retriever.java:128) at com.skyscraper.query.read.Retriever.main(Retriever.java:67) 原因:java.lang.IllegalStateException:这不是 JSON 对象。在 com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:83) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:66) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:33 ) 在 com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51) ... 还有 14 个 467) 在 com.google.gson.Gson.fromJson(Gson.java:417) 在 com.google.gson.Gson.fromJson(Gson.java:389) 在 com.skyscraper.transformer.NodeTransformer.fromGson(NodeTransformer.java :24) at com.skyscraper.query.read.Retriever.queryNode(Retriever.java:128) at com.skyscraper.query.read.Retriever.main(Retriever.java:67) 原因:java.lang.IllegalStateException:这不是 JSON 对象。在 com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:83) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:66) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:33 ) 在 com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51) ... 还有 14 个 389) 在 com.skyscraper.transformer.NodeTransformer.fromGson(NodeTransformer.java:24) 在 com.skyscraper.query.read.Retriever.queryNode(Retriever.java:128) 在 com.skyscraper.query.read.Retriever.main (Retriever.java:67) 原因:java.lang.IllegalStateException:这不是 JSON 对象。在 com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:83) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:66) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:33 ) 在 com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51) ... 还有 14 个 389) 在 com.skyscraper.transformer.NodeTransformer.fromGson(NodeTransformer.java:24) 在 com.skyscraper.query.read.Retriever.queryNode(Retriever.java:128) 在 com.skyscraper.query.read.Retriever.main (Retriever.java:67) 原因:java.lang.IllegalStateException:这不是 JSON 对象。在 com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:83) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:66) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:33 ) 在 com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51) ... 还有 14 个 java:67) 原因:java.lang.IllegalStateException:这不是 JSON 对象。在 com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:83) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:66) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:33 ) 在 com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51) ... 还有 14 个 java:67) 原因:java.lang.IllegalStateException:这不是 JSON 对象。在 com.google.gson.JsonElement.getAsJsonObject(JsonElement.java:83) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:66) 在 com.google.gson.MapTypeAdapter.deserialize(MapTypeAdapter.java:33 ) 在 com.google.gson.JsonDeserializerExceptionWrapper.deserialize(JsonDeserializerExceptionWrapper.java:51) ... 还有 14 个
所以问题再次是我如何正确解析这个 json 输出。如果有任何价值,它来自neo4j 休息调用。
当前实施:
import java.util.ArrayList;
import java.util.List;
public class Wrapper {
private String[] columns = new String[] { "type", "relation" };
private List<List<Object>> f = new ArrayList<List<Object>>();
public String[] getColumns() {
return columns;
}
public void setColumns(String[] columns) {
this.columns = columns;
}
public List<List<Object>> getF() {
return f;
}
public void setF(List<List<Object>> f) {
this.f = f;
}
}
public class NodeTransformer {
public static void main(String[] a) {
Gson gson = new Gson();
Wrapper w = new Wrapper();
List<List<Object>> blah = w.getF();
List<Object> objects = new ArrayList<Object>();
objects.add(new DataNode());
objects.add(new DataNode());
blah.add(objects);
w.setF(blah);
System.out.println(gson.toJson(w));
}
产量:
{
"columns":["type","relation"],
"f": [ [
{"paged_traverse":"localhost/db/data/node/25/paged/traverse/{returnType}{?pageSize,leaseTime}",
"outgoing_relationships":"localhost/db/data/node/25/relationships/out",
"data":{},
"all_typed_relationships":"localhost/db/data/node/25/relationships/all/{-list|\u0026|types}",
"traverse":"localhost/db/data/node/25/traverse/{returnType}",
"self":"localhost/db/data/node/25",
"all_relationships":"localhost/db/data/node/25/relationships/all",
"property":"localhost/db/data/node/25/properties/{key}",
"outgoing_typed_relationships":"localhost/db/data/node/25/relationships/out/{-list|\u0026|types}",
"properties":"localhost/db/data/node/25/properties",
"incoming_relationships":"localhost/db/data/node/25/relationships/in",
"incoming_typed_relationships":"localhost/db/data/node/25/relationships/in/{-list|\u0026|types}",
"extensions":{},
"create_relationship":"localhost/db/data/node/25/relationships"}}
]
]
}