jackson 2.2 주석 @JsonProperty를 사용하고 있는데 필수 항목을 true로 설정합니다. ObjectMapper readValue() 메서드를 통해 해당 속성을 포함하지 않는 json 파일을 deserialize하는 동안 예외가 throw되지 않습니다. 다른 방식으로 작동해야합니까, 아니면 놓친 적이 있습니까? Jackson @JsonProperty (필수 = true) 예외를 throw하지 않습니다.
내 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;
}
}
이것은 내가 클래스를 역 직렬화 할 방법은 다음과 같습니다
Serializer serializer = new Serializer();
User result = serializer.readUser(new File("user.json"));
실제 위치는 JSON은 다음과 같습니다
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);
}
}
이것은 실제로 호출하는 방법입니다 :
{"GENDER":"FEMALE","VERIFIED":true,"IMG":"AQ8="}
_name이 json 파일에 지정되지 않았으므로 예외가 발생해야합니다.
유효성 검사를 위해 스키마 v.4를 생성하는 가장 좋은 방법은 무엇입니까? – jaksky
ObjectMapper 매퍼 = new ObjectMapper(); JsonSchema 스키마 = mapper.generateJsonSchema (User.class); 이 방법으로 스키마를 생성 할 때 유효하지 않은 유효하지 않은 스키마 중에 주장합니다 – jaksky
그것에 대해 별도의 질문을 할 수 있습니다. Jackson을 사용하면 외부 모듈 (https://github.com/FasterXML/jackson-module-jsonSchema)을 사용할 수 있습니다. 하지만 다른 JSON 스키마 생성기가 있습니다. JSON Schema를 직접 사용하지 않으므로 어떤 것이 가장 좋을지 언급 할 수 없습니다. – StaxMan