【问题标题】:Using Jackson and JsonNode, how to filter Json objects with certain "field":"value"使用 Jackson 和 JsonNode,如何过​​滤具有特定“字段”:“值”的 Json 对象
【发布时间】:2015-12-04 17:02:00
【问题描述】:

我正在使用 Jackson 来获取 Json,如下所示:

WSRequest request = WS.url("https://www.someurl.com");
Promise<WSResponse> promise = request.get();
Promise<JsonNode> jsonPromise = promise.map(s -> {return s.asJson();});
JsonNode jsonNode = jsonPromise.get(1000);

到目前为止一切顺利。现在我有 jsonNode ,它是许多 Json 对象的数组。我想只保留包含某个字段的 Json 对象:值保留所有具有“courseLevel”:“basic”的对象。我该怎么做? ObjectMapper 是正确的方法还是更好的方法来过滤数组中的对象并只保留具有特定字段/值的对象?有什么建议吗?

【问题讨论】:

    标签: json jackson


    【解决方案1】:

    ObjectMapper 用于将对象数据绑定到 JSON 文档。只有在反序列化后,您才能丢弃或保留对象。以下是仅保留存在 "field":"value" 对的对象的建议:

    Iterator<JsonNode> it = rootNode.iterator();
    while (it.hasNext()) {
        JsonNode node = it.next();
        if (node.has("field") && !node.get("field").textValue().equals("value")) {
            it.remove();
        }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-22
      • 2021-07-05
      • 2021-11-04
      • 2019-06-18
      • 1970-01-01
      • 2018-05-07
      • 2019-10-03
      • 2017-08-27
      相关资源
      最近更新 更多