使用Jackson和JsonNode,如何过​​滤具有某些“field”:“value”的Json对象

Mad*_*ine 5 json jackson

我使用 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);
Run Code Online (Sandbox Code Playgroud)

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

Man*_*dis 3

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();
    }
}
Run Code Online (Sandbox Code Playgroud)