我正在用java中的jackson構造一個json體。它會像下面忽略來自json body的使用jackson的空元素
{
"subject": "math",
"marks": "100",
"student":{
"name": "x",
"class": "8"
}
}
基於不同REST URI的JSON的身體已經忽略某些字段或元素。我如何使用jackson忽略上述json主體中的「學生」部分? 當我不理它,我應該能夠得到的只有
{ "subject": "math", "marks": "100"}
,但我得到它下面是引線不
{ "subject": "math", "marks": "100","student":{}}
我有兩個班,getter和setter,一個爲主體另一個是學生。我嘗試使用@JsonIgnore,但它忽略了所有的URI,我不想要。我也試過@JsonInclude(Include.NON_EMPTY)。我如何實現這一目標?
我在這裏添加我的代碼。基於不同的REST URI,json主體必須忽略一些字段或元素。例如,對於一個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;
}
}
}
}
}
[傑克遜不同的JSONFilter同一類]的可能的重複(http://stackoverflow.com/questions/27041544/jackson-different-jsonfilter-same-class) – toongeorges