如何使用json节点解析json数组值

我有一个包含以下JSON的JsonNode 。 在JsonNode对象里面是一个数组。 在该数组中有三个字段,其中一个是slaid ,是一个列表。 另外两个是字符串。 这是JSON。

 { "SLA": [ { "slaid": [ "53637cc144ae8b607e089701" ], "ragindicator": "Red", "name": "r1" }, { "slaid": [ "53637d1844ae8b607e089704" ], "ragindicator": "Amber", "name": "a1" }, { "slaid": [ "53637eac44ae8b607e089706" ], "ragindicator": "Green", "name": "g1" } ] } 

我想解析这个值。 我如何解析它, slaid的类型是List ? 我尝试了一些方法,但我仍然无法找到解决方案。

我能看到的最简单的方法是创建适合您的JSON POJO类:

 class Slaids { @JsonProperty("SLA") private List slaids; public List getSlaids() { return slaids; } public void setSlaids(List slaids) { this.slaids = slaids; } @Override public String toString() { return slaids.toString(); } } class Slaid { private List slaid; private String ragindicator; private String name; public List getSlaid() { return slaid; } public void setSlaid(List slaid) { this.slaid = slaid; } public String getRagindicator() { return ragindicator; } public void setRagindicator(String ragindicator) { this.ragindicator = ragindicator; } public String getName() { return name; } public void setName(String name) { this.name = name; } @Override public String toString() { return "Slaid [slaid=" + slaid + ", ragindicator=" + ragindicator + ", name=" + name + "]"; } } 

简单用法:

 ObjectMapper mapper = new ObjectMapper(); System.out.println(mapper.readValue(json, Slaids.class)); 

以上程序打印:

 [Slaid [slaid=[53637cc144ae8b607e089701], ragindicator=Red, name=r1], Slaid [slaid=[53637d1844ae8b607e089704], ragindicator=Amber, name=a1], Slaid [slaid=[53637eac44ae8b607e089706], ragindicator=Green, name=g1]] 

如果你想使用JsonNode你可以这样做:

 ObjectMapper mapper = new ObjectMapper(); JsonNode rootNode = mapper.readTree(json); ArrayNode slaidsNode = (ArrayNode) rootNode.get("SLA"); Iterator slaidsIterator = slaidsNode.elements(); while (slaidsIterator.hasNext()) { JsonNode slaidNode = slaidsIterator.next(); System.out.println(slaidNode.get("slaid")); System.out.println(slaidNode.get("ragindicator")); System.out.println(slaidNode.get("name")); } 

以上程序打印:

 ["53637cc144ae8b607e089701"] "Red" "r1" ["53637d1844ae8b607e089704"] "Amber" "a1" ["53637eac44ae8b607e089706"] "Green" "g1"