【问题标题】:Gson nodes/links object mappingGson 节点/链接对象映射
【发布时间】:2017-06-21 07:46:43
【问题描述】:

我有一个 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);

我得到的原因是因为它没有遵循正确的层次结构。关键是我只对NodeLink 感兴趣,所以为什么要担心层次结构。

如果不是 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 对象填充良好

【问题讨论】:

  • 你可以看看@stackoverflow.com/questions/19551242/…这可能会有所帮助
  • 这没有帮助,因为问题是通过 Gson 解析 json,我知道问题已经是我不想制作确切的类层次结构,因为我只对节点和链接

标签: java json jackson gson


【解决方案1】:
JsonParser parser = new JsonParser();
JsonObject o = parser.parse(your json string).getAsJsonObject();

在获取 JsonObject 之后,遍历对象并获取所有键的列表内的所有节点和链接

例如 - Set&lt;Entry&lt;String, JsonElement&gt;&gt; entrySet = jsonObject.entrySet();

【讨论】:

  • 我做了这样的事情 ~ Set> entrySet = obj.entrySet(); for(Map.Entry entry : entrySet){ if(entry.getKey().contains("node")){ siteFlowElement.addNodes((List) obj.get(entry.getKey() )); } if(entry.getKey().contains("link")){ siteFlowElement.addLinks((List) obj.get(entry.getKey())); } }
  • 什么是错误,您可以在评论部分很难弄清楚的问题中更新它
  • 它在节点和链接中给出空值...你能用代码告诉问题
  • jsonObject 填充得好吗?你试过打印吗
猜你喜欢
  • 2019-06-06
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-06
相关资源
最近更新 更多