javaのjacksonを使用してjsonボディを構築しています。以下のようなものになりますジャクソンを使用してjson bodyの空の要素を無視する
{
"subject": "math",
"marks": "100",
"student":{
"name": "x",
"class": "8"
}
}
異なるREST URIに基づいて、json本体はいくつかのフィールドまたは要素を無視する必要があります。 jacksonを使って上記のjson bodyから "student"の部分を無視するにはどうすればいいですか? 私はそれを無視すると、私は唯一の
{ "subject": "math", "marks": "100"}
を得ることができる必要がありますが、私はgetterとsetterを持つ2つのクラス、被写体としての1を持っている
{ "subject": "math", "marks": "100","student":{}}
incorrect-である以下のようにそれを取得していますもう1人は学生です。私は@JsonIgnoreを使ってみましたが、私は望んでいないすべてのURIを無視します。私も@JsonInclude(Include.NON_EMPTY)を試しました。これをどのように達成するのですか?
ここに自分のコードを追加しています。異なるREST URIに基づいて、JSON本体はいくつかのフィールドまたは要素を無視しなければなりません.1つのURIの場合は、すべてのフィールドを含める必要があり、別のURIの場合は学生を無視する必要があります。 スコアスコア=新しいスコア();
score.setSubject("math");
score.setMarks("100");
Score.Student student =score.new Student();
score.setStudent(student);
switch (type) {
case StudentAdd:
score.setSubject("math");
score.setMarks("100");
break;
case StudentDelete:
score.setSubject("math");
score.setMarks("100");
break;
case StudentComplete:
score.setChangeReason("C");
default:
break;
score.setSubject("math");
score.setMarks("100");
score.setStudent(student);
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(SerializationFeature.INDENT_OUTPUT, true);
//objectMapper.setSerializationInclusion(Include.NON_NULL);
objectMapper.setSerializationInclusion(Include.NON_EMPTY);
StringWriter jsonBody = new StringWriter();
objectMapper.writeValue(jsonBody, score);
return jsonBody.toString();
}
//@JsonInclude(Include.NON_EMPTY)
class Score {
private String subject;
private String marks;
private Student student;
public String getSubject() {
return subject;
}
public void setSubject(String subject) {
this.subject = subject;
}
public String getMarks() {
return marks;
}
public void setMarks(String marks) {
this.marks = marks;
}
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
//@JsonInclude(Include.NON_NULL)
class Student {
private String name;
@JsonProperty("class")
private String clazz;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getClazz() {
return clazz;
}
public void setClazz(String clazz) {
this.clazz = clazz;
}
}
}
}
}
[Jackson Different JSONFilter same class]の複製があります。(http://stackoverflow.com/questions/27041544/jackson-different-jsonfilter-same-class) – toongeorges