从ArrayNode中删除element.field

时间:2016-06-02 14:25:56

标签: java json jackson

我有这样的json ArrayNode,我需要使用ObjectMapper,ArrayNode,JsonNode或ObjectNode从每个元素中删除例如字段“xxx”但没有Gson和@JsonIgnore等。

"arrayNode": [
               {
                 "xxx": {},
                 "yyy": {}
               },
               {
                 "xxx": {},
                 "yyy": {}
               }
             ]

2 个答案:

答案 0 :(得分:1)

我不确定此问题是否已解决。但是以下代码段显示了如何从JSON节点中删除键为xxx的字段。而且JsonNode无法执行插入或删除操作,因此您必须将其强制转换为ObjectNode才能进行进一步的操作。

代码段

 ObjectMapper mapper = new ObjectMapper();
 JsonNode rootNode = mapper.readTree(jsonStr);
 rootNode.get("arrayNode").forEach(e -> {
     if (e.has("xxx")) {
         ObjectNode objNode = (ObjectNode) e;
         objNode.remove("xxx");
     }
 });

 System.out.println(rootNode.toString());

控制台输出

  

{“ arrayNode”:[{“ yyy”:{}},{“ yyy”:{}}]}

答案 1 :(得分:0)

您可以使用此maven依赖关系:http://mvnrepository.com/artifact/org.json/json/20160212

低调和使用非常简单。例如:

JSONObject obj = "YOUR_JSON_STRING";
JSONArray result = obj.getJSONArray("YOUR_STRING_KEY");

for(JSONObject elem : result){
   String out = elem.getString("xxx");
}

您可以阅读更多内容:https://developer.android.com/reference/org/json/JSONArray.html 祝你好运