我将使用Java中的Jackson库构建一个JSON数据体。它可能像以下这样:
根据不同的REST URI,必须忽略json主体中的某些字段或元素。如何使用jackson忽略上述json主体中的“student”部分?当我忽略它时,我应该只能获取到:
但是我得到的结果如下,这是不正确的 -
{
"subject": "math",
"marks": "100",
"student":{
"name": "x",
"class": "8"
}
}
根据不同的REST URI,必须忽略json主体中的某些字段或元素。如何使用jackson忽略上述json主体中的“student”部分?当我忽略它时,我应该只能获取到:
{ "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;
}
}
}
}
}