Tôi đang sử dụng chú thích jackson 2.2 @JsonProperty với yêu cầu được đặt thành true. Trong khi deserializing tập tin json mà không chứa tài sản đó thông qua ObjectMapper readValue() phương pháp không có ngoại lệ đang được ném. Nó có hoạt động theo một cách khác hoặc tôi đã bỏ lỡ điều gì đó?Jackson @JsonProperty (required = true) không ném ngoại lệ
lớp dto của tôi:
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;
}
}
Đây là cách để tôi deserialize lớp:
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);
}
}
Đây là cách nó thực sự được gọi là:
Serializer serializer = new Serializer();
User result = serializer.readUser(new File("user.json"));
actuall json trông giống như :
{"GENDER":"FEMALE","VERIFIED":true,"IMG":"AQ8="}
Tôi hy vọng rằng vì _name không được chỉ định trong tệp json và được yêu cầu ngoại lệ sẽ được ném.
Cách tốt nhất để tạo lược đồ v.4 cho mục đích xác thực từ đó là gì? – jaksky
ObjectMapper mapper = new ObjectMapper(); JsonSchema schema = mapper.generateJsonSchema (User.class); Khi tôi tạo lược đồ theo cách này, nó tuyên bố trong lược đồ không hợp lệ hợp lệ – jaksky
Bạn có thể muốn đặt một câu hỏi riêng về điều đó. Với Jackson, bạn sẽ sử dụng mô-đun bên ngoài (https://github.com/FasterXML/jackson-module-jsonSchema). Nhưng có các trình tạo lược đồ JSON khác; Tôi không sử dụng lược đồ JSON cho bất cứ điều gì vì vậy tôi không thể bình luận về cái nào là tốt nhất. – StaxMan