对于Jackson的序列化,定义自定义bean为空的正确方法是什么?
我想用Json过滤不需要的字段-
目前,如果属于自定义bean的所有变量都为null,我有一个额外的方法将null值分配给它。我在寻找的是,这是否可以由杰克逊来完成。
public class JsonFileContext {
//...Some variables
@JsonInclude(JsonInclude.Include.NON_EMPTY)
@JsonView(Views.In.class)
private ContentRecognize contentRecognize;
//...getter/setter method
}
内容识别类
public class ContentRecognize {
@JsonInclude(JsonInclude.Include.NON_NULL)
private String type;
@JsonInclude(JsonInclude.Include.NON_NULL)
private RecognizePattern targetId;
@JsonInclude(JsonInclude.Include.NON_NULL)
private RecognizePattern msgId;
//...getter/setter method
}
预期产量
{
"var1":"var1Content",
"var2":"var2Content"
}
和
{
"var1":"var1Content",
"var2":"var2Content",
"contentRecognize":{
"type":"typeContent"
}
}
电流输出
{
"var1":"var1Content",
"var2":"var2Content",
"contentRecognize":{}
}
和
{
"var1":"var1Content",
"var2":"var2Content",
"contentRecognize":{
"type":"typeContent"
}
}
您可以使用@JsonIgnoreProperties
或@JsonIgnore
注释之一。
@JsonIgnoreProperties
用于忽略序列化和反序列化中的某些属性,而不考虑其值:
为了防止指定的字段被序列化或反序列化(即不包括在JSON输出中;或者即使它们被包括在内也被设置):@JsonIgnoreProperties({"interalId","秘书密钥"})
要毫无例外地忽略JSON输入中的任何未知属性:@JsonIgnoreProperties(ignoreUnknown=true)
@jsonIgnore
标记注释,指示基于内省的序列化和反序列化功能将忽略带注释的方法或字段。也就是说,它不应该被认为是“吸气剂”、“定位器”或“创造者”。
此外,从Jackson 1.9开始,如果这是与一个属性关联的唯一注释,也会导致整个属性被忽略:也就是说,如果setter有这个注释,而getter没有注释,getter也被有效忽略。不同的访问器仍然有可能使用不同的注释;因此,如果只忽略getter,其他访问器(setter或field)将需要显式注释来防止不正确的注释(通常是JsonProperty)。
在你的情况下,我会:
1:
@JsonIgnoreProperties({ "contentRecognize" })
public class JsonFileContext {
[...]
}
2:
public class JsonFileContext {
//...Some variables
@JsonIgnore
private ContentRecognize contentRecognize;
//...getter/setter method
}
3:用@JsonIgnore
根据这个答案:https://stackoverflow.com/a/43342675/5810648 我编写了这样的序列化程序: 如果注释存在并且字段为,则Witch应该编写字符串“N/A”。但是方法仅对非空字段调用。 此外,我还尝试调用setNullValueSerializer: 有了这样的实施: 但没有结果。 如何以这种方式处理空字段? 使现代化 根据讨论:https://github.c
问题内容: 我正在尝试创建将影响序列化值的自定义杰克逊注释。 含义: 现在序列化对象X(10)将导致: 我该如何实现? 问题答案: 结果:
问题内容: 根据这个答案:http://codingdict.com/questions/137507 我写了这样的序列化器: 如果注释存在且字段为,则女巫应该写字符串“ N / A” 。但是仅对非空字段调用方法。 另外,我尝试致电: 通过这样的实现: 但是没有结果。 如何以这种方式处理空字段? 更新资料 根据讨论:https : //github.com/FasterXML/jackson- d
我试图创建会影响序列化值的自定义jackson注释。 意思是: 现在序列化对象X(10)将导致: 我怎样才能做到这一点?
我有下面的JSON,我正试图使用Jackson API反序列化它 我基本上需要一个附件类,它有一个AttachmentFile对象列表,如下所示: 如何使用自定义反序列化器实现这一点? 谢谢
我想将包含另一个空值POJO的POJO序列化为JSON。 例如,给定: 连载之后,它看起来会是这样的 如果类的所有字段也为空,是否可以排除空对象?理想情况下,全局适用于每个对象,而无需编写自定义代码。