给定的Person.java:
public class Person implements Serializable {
private static final long serialVersionUID = 1L;
private String lastName;
private String firstName;
private String middleName;
// ...
public String getLastName() {
return lastName;
}
public String getFirstName() {
return firstName;
}
public String getMiddleName() {
return middleName;
}
}
和Persons.java:
public class Persons implements Serializable {
private static final long serialVersionUID = 1L;
private final List<Person> persons;
public Persons(List<Person> persons) {
this.persons = persons;
}
public List<Person> getPersons() {
return persons;
}
}
当返回 Persons 的 JSON 响应时,“persons”元素会重复:
{
"persons" : {
"persons" : [ {
"lastName" : "McCartney",
"firstName" : "James",
"middleName" : "Paul"
}, {
"lastName" : "Lennon",
"firstName" : "John",
"middleName" : "Winston"
}, {
"lastName" : "Starkey",
"firstName" : "Richard",
"middleName" : null
}, {
"lastName" : "Harrison",
"firstName" : "George",
"middleName" : null
} ]
}
}
如何删除多余的元素?
最佳答案
原因可能是因为您有一个名为 persons
的模型属性,您要返回该属性以供 MappingJackson2JsonView
转换为 json:
model.addAttribute("persons",personsType);
我能想到两个很好的修复方法:
要使用
<@ResponseBody
注解的 Controller 方法,这样您就可以返回人员,并且MappingJackson2HttpMessageConverter
会将您的类型干净地转换为 json如果您想继续使用您的方法,您可以使用附加标志自定义
MappingJackson2JsonView
,以指示它必须在序列化为 json 之前从模型中提取值 - 请参阅 here
关于java - Spring MVC MappingJackson2JsonView 集合元素重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729577/