我正在使用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");
如何通过过滤属性<code>name</code>来获得特定的JsonNode元素?如果我想得到<code>值</code>大于X的JsonNode元素,怎么样?我是否可以在不遍历<code>结果</code>变量的情况下完成这些操作?
您可以使用java.lang.Iterable
的forEach(Consumer c)
(JDK 1.8)函数来执行列表迭代。此方法采用一个使用者
实例,该实例处理列表中的所有值。此方法可以扩展为在迭代时使用筛选器,如下所示:
public static void main(String[] args) {
ObjectMapper om = new ObjectMapper();
InputStream in = Thread.currentThread().getContextClassLoader().getResourceAsStream("test.json");
try {
JsonNode node = om.readValue(in, JsonNode.class).get("results");
NodeFilteringConsumer consumer = new NodeFilteringConsumer(new NodeFilter() {
@Override
public boolean apply(JsonNode node) {
//Filter for node with values greater than 20.
return node.get("values").asDouble() > 20;
}
});
node.forEach(consumer);
} catch (Exception e) {
e.printStackTrace();
}
}
public static interface NodeFilter{
boolean apply(JsonNode node);
}
public static class NodeFilteringConsumer implements Consumer<JsonNode>{
private NodeFilter f;
public NodeFilteringConsumer(NodeFilter f) {
this.f = f;
}
@Override
public void accept(JsonNode t) {
if (f.apply(t)){
//Only filtered records reach here
System.out.println("Filter applied on node:" + t);
}
}
}
使用Jackson过滤掉属性非常简单: 我正在尝试将其集成到我的Jersey REST应用程序中。API用户可以通过提供查询字符串来过滤属性: 在泽西岛最优雅的方式是什么?我可以很容易地在我的资源方法中执行上述操作,但这不知何故破坏了Jersey的优雅。此外,我认为为每个请求创建一个新的ObjectMapper会导致性能下降。 我可以编写一个MessageBodyWriter,它从UriInfo上
我对xslt有这个问题。样式表中有一个名为misctable的表,它被放在一个变量miscTables中。例如在节点 id="_384PLATE"具有值A1、A2、B1。当我标记并将其与xml进行比较时,我需要保存R[@i=2]/C/@i属性的值。在这种情况下,我需要得到值2,3,26 xml xslt 非常感谢。
我想选择仅在顶级国家/地区之后或仅在其他国家/地区之后的span元素 我已经尝试了 如果我分别尝试这两种XPATH,它们都可以工作,但如果结合使用,它们就不起作用。 我只想选择排名靠前的国家,并将其列入一个列表:,然后过滤掉其他国家。 如果我使用[text()=“Top Countries”]//以下同胞::span所有国家都被选中。例如,<代码>[“澳大利亚”、“几内亚比绍”、“西班牙”、“瑞士
我如何使用“insref”和“pref”对下面的元素进行分组,我在xslt版本1中使用了生成密钥id。 期望的结果: 这是我所拥有的。我也在使用密钥生成函数。任何想法这个xslt有什么问题。至于计数,我正在考虑获得唯一的密钥计数。
我有一个使用Postgre 9.3和JPA2.1(Hibernate实现)的Spring MVC应用程序。我有一个类'电影',其中有一组评论。我想写一个JPA NamedQuery,它返回我所有的电影细节,但只有批准的评论。评论可以有其他状态,但我想只显示批准的评论。 我的班级如下所示: 我写的查询不会过滤评论并返回包含所有评论的电影;它的工作原理与上面显示的findMovieById查询相同。
我使用jackson-dataformat-xml(2.9)将XML解析为JSONode,然后将其解析为JSON(XML是非常动态的,所以我使用JSONode而不是绑定到POJO。例如,“元素名”和“id”的名称可能不同)。 在JSON解析阶段,其中一个元素键是空字符串(“”)。 XML: JSON: 结果: 预期: 我的想法是无论何时找到空密钥“”,并用“值”替换它。无论是在XML反序列化还是在