以下是一个例子:
class Person {
String name;
Address addressGiven;
//getters and setters
class Address {
@JsonProperty(name="stno")
private String StreetNo
@JsonProperty(name="type")
private AddressType addType;
public void setstno(String stno){
if (this.addressGiven==null)
addressGiven=new Address();
addressGiven.setStno(stno);
}
public void setType(String type) {
if (addressGiven==null){
addressGiven=new Address();
}
addressGiven.setType(AddressType.valueOf(type));
}
// other getters and setters
}
}
AddressType.java
Enum AddressType {
HOME,
OFFICE,
BUSINESS,
DEFAULT;
}
在我回答我的问题之前需要注意两点:
addType
属于enum type
当我序列化对象时:
Person person = new Person();
Person.setStNo("1234");
person.setType("HOME");
ObjectMapper mapper = new ObjectMapper();
String body = mapper.writeValueAsString(person);
System.out.println(body);
I expect:
{
"addressGiven:
{ "stno" : "1234",
"type" : HOME,
}
}
但我得到的是:
{ "streetNo" : "1234"}
。
三个值得注意的差异
streetNo
但未返回stno
为什么是预期的json(即内部没有返回。我在哪里遗漏了一些注释? 我浏览了杰克逊的文档。但不能早点弄清楚。所以我在这里?