我遇到了用Jackson解析JSON对象的问题。
我的对象如下:
{ ... { ... "element" : { ... "user" : {...} } } }
对象"元素"有一个嵌套对象" user"。我不需要解析实际的"用户"对象,但我需要知道它的存在与否。
我已设法使用此代码执行此操作:
// just a dummy User object
@JsonRootName("user")
@JsonIgnoreProperties(ignoreUnknown=true)
public class User {}
@JsonRootName("element")
public class Element {
...
private boolean isUser;
public void setUser(User user) {
isUser = user != null;
}
}
如果用户对象在JSON中通过Jackson注释不是null,是否可以完全忽略User对象并将isUser变量设置为true?
由于
答案 0 :(得分:0)
使用@JsonIgnore
注释Element内的用户属性,使用@JsonProperty
注释setUser方法..查看它是否有效..
答案 1 :(得分:0)
不仅仅是声明,尽管你可以通过以下方式实现:
public class Element {
public boolean defined;
public void setUser(Object bogus) {
defined = (bogus != null);
}
}
因此,无论JSON值与user
匹配,其界限为"自然"键入(Map,List),然后检查完成。
如果性能很重要,您还可以编写一个非常简单的JsonDeserializer
来检查当前令牌(调用时),调用JsonParser.skipChildren()
,然后返回Boolean.TRUE
或Boolean.FALSE
,这样您就可以了可能有类似的东西:
public class Element {
@JsonProperty("user") // so deserializer called for 'user' property
@JsonDeserialize(using=MyExistenceCheckingDeserializer.class)
public boolean defined;
}
电除尘器。如果通常需要这种存在检查。