根据属性值过滤Jackson的JsonNode元素

时间:2015-11-30 07:05:32

标签: java json jackson

我正在使用Jackson的JsonNode解析json。我的json结构看起来像这样(让它变成rawJson):

{
    <some fields...>,
    "results" : [
            {
                "name" : "name1",
                "data" : ...,
                "values" : 13
            }, 
            {
                "name" : "name2",
                "data" : ...,
                "values" : 20
            },
            .
            .
            .
            {
                "name" : "name_n",
                "data" : ...,
                "values" : 151
            }
        ]
}
Java中的

ObjectMapper mapper = new ObjectMapper();
JsonNode results = mapper.readValue(rawJson, JsonNode.class).get("results");

如何通过过滤属性name来获取特定的JsonNode元素?如果我想获得value大于X的JsonNode元素怎么样?我可以在不绕过results变量的情况下完成这些吗?

1 个答案:

答案 0 :(得分:3)

您可以使用forEach(Consumer c)的{​​{1}}(JDK 1.8+)函数来执行列表迭代。此方法采用java.lang.Iterable实例处理列表中的所有值。这种方法可以扩展为在迭代时采用过滤器,如下所示:

Consumer