我正在序列化Java类,以将其作为JSON对象传输到我的客户端。该类具有各种属性和一组@Transient
方法,这些方法结合了这些属性的子集。瞬态方法没有任何变量可以备份它们。
public class Person {
private String firstName;
private String lastName;
public void setFirstName(String firstName) {
this.firstName = firstName;
}
public String getFirstName() {
return firstName;
}
public void setLastName(String lastName) {
this.lastName = lastName;
}
public String getLastName() {
return lastName;
}
@Transient
public String getFullName() {
return firstName + " " + lastName;
}
}
从服务器读取对象时,此方法工作正常。但是,当我尝试保存JSON对象时,它会导致临时方法出现此错误:
“无法识别的字段(...),未标记为可忽略”
我不想为瞬态属性引入变量,但我仍想将瞬态方法的返回值从服务器传输到客户端。我该如何实现?
我尝试过的是这个,但我不确定是否完全理解@Json*
批注的想法:
@Transient
@JsonProperty
public String getFullName() {
return firstName + " " + lastName;
}
@JsonIgnore
public void setFullName(String fullName) {
// Empty method
}
在我看来,有一个空的二传手没有多大意义。但是也许我的假设是在没有属性表示属性的情况下转移属性,这首先是错误的!?
答案 0 :(得分:0)
使用JsonIgnoreProperties
批注:
@JsonIgnoreProperties(ignoreUnknown = true)
public class Person {
摘自文档:
用于定义是否可以忽略所有无法识别的属性的属性 反序列化过程中的特性。如果为true,则所有 无法识别-也就是说,没有设置员或创建者接受 它们-在没有警告的情况下会被忽略(尽管未知的处理程序 属性(如果有)将毫无例外地被调用)。 对序列化没有任何影响。
另请参阅: