我使用jackson 2.2註釋@JsonProperty並將其設置爲true。在通過ObjectMapper readValue()方法反序列化不包含該屬性的json文件時,不會引發異常。 它應該以不同的方式工作,還是我錯過了什麼?Jackson @JsonProperty(required = true)不會拋出異常
我的DTO類:
public class User {
public enum Gender {MALE, FEMALE}
;
public static class Name {
private String _first, _last;
public String getFirst() {
return _first;
}
public String getLast() {
return _last;
}
public void setFirst(String s) {
_first = s;
}
public void setLast(String s) {
_last = s;
}
}
private Gender _gender;
private Name _name;
private boolean _isVerified;
private byte[] _userImage;
@JsonProperty(value ="NAAME",required = true)
public Name getName() {
return _name;
}
@JsonProperty("VERIFIED")
public boolean isVerified() {
return _isVerified;
}
@JsonProperty("GENDER")
public Gender getGender() {
return _gender;
}
@JsonProperty("IMG")
public byte[] getUserImage() {
return _userImage;
}
@JsonProperty(value ="NAAME",required = true)
public void setName(Name n) {
_name = n;
}
@JsonProperty("VERIFIED")
public void setVerified(boolean b) {
_isVerified = b;
}
@JsonProperty("GENDER")
public void setGender(Gender g) {
_gender = g;
}
@JsonProperty("IMG")
public void setUserImage(byte[] b) {
_userImage = b;
}
}
這是我該如何反序列化類:
public class Serializer {
private ObjectMapper mapper;
public Serializer() {
mapper = new ObjectMapper();
SimpleModule sm = new SimpleModule("PIF deserialization");
mapper.registerModule(sm);
}
public void writeUser(File filename, User user) throws IOException {
mapper.writeValue(filename, user);
}
public User readUser(File filename) throws IOException {
return mapper.readValue(filename, User.class);
}
}
這是它是如何實際調用:
Serializer serializer = new Serializer();
User result = serializer.readUser(new File("user.json"));
實際工作中JSON的樣子:
{"GENDER":"FEMALE","VERIFIED":true,"IMG":"AQ8="}
我認爲,因爲_name沒有在json文件中指定,並且需要拋出異常。
什麼是生成模式v.4出於驗證目的的最佳方式? – jaksky
ObjectMapper mapper = new ObjectMapper(); JsonSchema schema = mapper.generateJsonSchema(User.class); 當我通過這種方式生成架構時,它在驗證無效架構期間聲明 – jaksky
您可能想要就此提出一個單獨的問題。與傑克遜,你會使用外部模塊(https://github.com/FasterXML/jackson-module-jsonSchema)。但還有其他的JSON Schema生成器;我不用任何東西來使用JSON Schema,所以我不能評論哪一個最好。 – StaxMan