Json 使用lombok自定义序列化和反序列化字段名
有没有一种方法可以指定不同的序列化/反序列化JSON字段名,而不必显式地写出getter和setter方法(可能使用lombok getter和setter) 与此类似,以下代码允许将传入的JSON反序列化为不同的POJO字段名。它还会导致POJO字段名按原样序列化:Json 使用lombok自定义序列化和反序列化字段名,json,jackson,lombok,Json,Jackson,Lombok,有没有一种方法可以指定不同的序列化/反序列化JSON字段名,而不必显式地写出getter和setter方法(可能使用lombok getter和setter) 与此类似,以下代码允许将传入的JSON反序列化为不同的POJO字段名。它还会导致POJO字段名按原样序列化: public class PrivacySettings { private String chiefDataOfficerName; @JsonProperty("CDO_Name__c") priva
public class PrivacySettings {
private String chiefDataOfficerName;
@JsonProperty("CDO_Name__c")
private void setChiefDataOfficerName(String chiefDataOfficerName) {
this.chiefDataOfficerName = chiefDataOfficerName;
}
@JsonProperty("chiefDataOfficerName")
private String getChiefDataOfficerName() {
return chiefDataOfficerName;
}
}
这看起来很冗长,但我还没能让@Getter和@Setter使用它。我确实看到Jackson支持@jsonaas,这在这个特定示例中可能会有所帮助,但我还需要使用不同的名称进行序列化
看起来这应该很简单,比如:
@Getter
@Setter
public class PrivacySettings {
@JsonSetter("CDO_Name__c")
@JsonGetter("chiefDataOfficerName")
private String chiefDataOfficerName;
}
但这当然是无效的。我特别认为在这种情况下,getter和setter没有任何错误
但是,如果您想尝试,因为v0.11.8 Lombok支持向生成的getter和setter添加注释。见: 要在生成的方法上添加注释,您可以使用
onMethod=@uu({@AnnotationsHere})
;若要在生成的setter方法的唯一参数上添加注释,可以使用onParam=@uu({@AnnotationsHere})
。不过要小心!这是一个实验特性。有关更多详细信息,请参阅有关该功能的文档
此功能的语法取决于JDK版本。对于JDK 8,您将有:
public class PrivacySettings {
@Setter(onMethod_ = { @JsonSetter("CDO_Name__c") })
@Getter(onMethod_ = { @JsonGetter("chiefDataOfficerName") })
private String chiefDataOfficerName;
}
对于JDK 7,语法为:
public class PrivacySettings {
@Setter(onMethod = @__({ @JsonSetter("CDO_Name__c") }))
@Getter(onMethod = @__({ @JsonGetter("chiefDataOfficerName") }))
private String chiefDataOfficerName;
}
有关更多详细信息,请查看和文档。另请参见此部分,以了解有关
@uuuuo()
的详细信息。您共享的想法看起来不错,但我认为您共享的示例链接是唯一受支持的方法。