java - Spring MVC MappingJackson2JsonView 集合元素重复

标签 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() {
        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);

我能想到两个很好的修复方法:

  1. 要使用 @ResponseBody 注解的 Controller 方法,这样您就可以返回人员,并且 MappingJackson2HttpMessageConverter 会将您的类型干净地转换为 json

    <
  2. 如果您想继续使用您的方法,您可以使用附加标志自定义 MappingJackson2JsonView,以指示它必须在序列化为 json 之前从模型中提取值 - 请参阅 here

关于java - Spring MVC MappingJackson2JsonView 集合元素重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18729577/

相关文章:

java - 允许在 DVD+R 上编译 DVD+R 上的 java 程序

java - 通过 jboss-as-7.1.1.Final 的一种方式 ssl

java - 如何使用 gson 解析包含列表的 json 字符串?

javascript - thymeleaf::使用服务中的数据填充表单

java - 配置 Velocity 以读取类路径之外的模板文件

java - 如何使用 FileWriter 写入同一个 CSV 文件

javascript - 动态 javascript 表不会显示数组的迭代

golang 中的 Json 解码类型模型

spring - 如何使用 Java 配置为登录页面配置 Spring MVC HttpSecurity

java - ASM ClassReader 无法解析类文件 - 可能是由于不支持新的 Java 类文件版本 - 我正在使用 Apache 7 和 JDK 1.8