Jackson没有在Spring中序列化嵌套类

时间:2016-02-11 08:31:56

标签: spring rest jackson

我有一个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的字段吗?

编辑:我正在使用杰克逊进行序列化。

2 个答案:

答案 0 :(得分:0)

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

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>

答案 1 :(得分:0)

它没有序列化,因为您的属性不公开。使属性公开并且有效。