【问题标题】:Jackson doesn't serialize nested classes in SpringJackson 不在 Spring 中序列化嵌套类
【发布时间】:2016-05-21 22:21:17
【问题描述】:

我有一个 REST 前端 UI 和一个基于 Spring JPA 的后端的实现。 在其中,我有一个这样的课程:

public class TaskInfo {

    // 4 fields

    private Parent parentList;

    // 3 fields

    // Getters and Setters

}

class Parent {

    // Parent class code
}

当我尝试使用Response 时,我发现Parent 的位置是null 值。为什么这个Parent 对象没有被序列化?有解决方法吗?还是直接在这个类中包含Parent的字段?

编辑:我正在使用 Jackson 进行序列化。

【问题讨论】:

  • 你在用gson吗?还是杰克逊?你能用它更新问题吗?
  • 可能是因为你的类有包可见性? @SamuelAlexander,相关问题!
  • @SamuelAlexander Jackson。添加了有问题的内容。
  • 我刚刚做了一个示例,它与杰克逊完美配合
  • 你确定,有一个值设置为 parentList?

标签: spring rest jackson


【解决方案1】:

对我来说,以下工作正常。我认为这相当于您问题中的代码

package jackson;

import java.io.IOException;

import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.databind.ObjectMapper;

public class TaskInfo {

    public TaskInfo(String id, Parent parentList) {
        super();
        this.id = id;
        this.parentList = parentList;
    }

    private String id;
    private Parent parentList;

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public Parent getParentList() {
        return parentList;
    }

    public void setParentList(Parent parentList) {
        this.parentList = parentList;
    }

    public static void main(String args[]) throws IOException {
        Parent parent = new Parent("123");
        TaskInfo taskInfo = new TaskInfo("taskID", parent);
        String json = new ObjectMapper().writeValueAsString(taskInfo);

        System.out.println(json);
    }

}

class Parent {

    public Parent(String parentId) {
        this.parentId = parentId;
    }

    public String getParentId() {
        return parentId;
    }

    public void setParentId(String parentId) {
        this.parentId = parentId;
    }

    private String parentId;
    // Parent class code
}

它打印以下输出

{"id":"taskID","parentList":{"parentId":"123"}}

我用的是杰克逊

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-core</artifactId>
    <version>2.7.1</version>
</dependency>

【讨论】:

  • 我不知道为什么我会得到空值。我已经将问题追溯到这个,所以这一定是问题所在。也许我在某个地方忘记了一个二传手。
【解决方案2】:

它不会序列化,因为您的属性不是公开的。将属性公开,它可以工作。

【讨论】:

  • 属性在 Java 中未设置为公共。方法是。
猜你喜欢
  • 1970-01-01
  • 2016-02-13
  • 2019-12-02
  • 1970-01-01
  • 1970-01-01
  • 2013-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多