我有一个JSON文件,它有独立的子部分,所有子部分都有相同类型的数据,有没有什么方法可以直接映射这些内部对象
{
"pre-execution": {
"nodes": [],
"links": []
},
"execution": {
"nodes": [],
"links": []
},
"completion": {
"nodes": [],
"links": []
}
}
我只对节点和链接类型的数据感兴趣,而不关心它属于哪个类别。
我的班级结构如下所示
public class NodeElement{
private List<Node> nodes;
private List<Link> links;
}
有什么方法可以通过Gson库直接映射它。我正在使用的代码是null
Gson gson=new Gson();
NodeElement nodeElements=gson.fromJson(jsonString,NodeElement.class);
我得到的原因是因为它没有遵循正确的层次结构。关键是我只对Node
和Link
感兴趣,所以为什么要担心层次结构。
如果不是Gson,可以使用任何其他库吗?
我试过这样做
for(Map.Entry<String,JsonElement> entry : entrySet){
if(entry.getKey().contains("node")){
siteFlowElement.addNodes((List<GoJSNode>) obj.get(entry.getKey()));
}
if(entry.getKey().contains("link")){
siteFlowElement.addLinks((List<GoJSLink>) obj.get(entry.getKey()));
}
}
System.out.println("Nodes"+siteFlowElement.getNodes());
System.out.println("Links"+siteFlowElement.getLinks());
但它返回null,
Json对象填充正常
答案 0 :(得分:1)
JsonParser parser = new JsonParser();
JsonObject o = parser.parse(your json string).getAsJsonObject();
获取JsonObject后迭代对象并获取所有键的所有节点和链接
例如 - Set<Entry<String, JsonElement>> entrySet = jsonObject.entrySet();