Java Spring MVC映射Jackson2JSONView集合元素重复
给定Person.java:Java Spring MVC映射Jackson2JSONView集合元素重复,java,json,spring-mvc,jackson,Java,Json,Spring Mvc,Jackson,给定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()
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:
model.addAttribute(“persons”,personsType)代码>
我可以想出两个好办法:
要改为使用带注释的控制器方法@ResponseBody
,您可以通过这种方式返回persons,而MappingJackson2HttpMessageConverter
将您的类型干净地转换为json
如果您想继续您的方法,您可以自定义MappingJackson2JsonView
,使用一个附加的标志指示它必须在序列化为json之前从模型中提取值-请参阅
{
"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
} ]
}
}