Jackson以相反的顺序从JSON反序列化对象

时间:2019-05-28 15:46:58

标签: java spring jackson

Jackson正在按照相反的顺序反序列化JSON元素。我们在一个环境中有一个前端,该前端发送类似于下一个JSON的内容:

{
    "nameElement": "element",
    "subElementList": [
        {
            "nameSubElement": "a"
        },
        {
            "nameSubElement": "b"
        },
        {
            "nameSubElement": "c"
        }
    ]
}

还有一个后端,它通过Jackson将其反序列化为这样的对象:

@Entity
public class Element {

    private String nameElement;

    @OneToMany(cascade = CascadeType.ALL, mappedBy = "element", fetch = FetchType.LAZY, orphanRemoval = true)
    @SortNatural
    private SortedSet<SubElement> subElementList;

}
@Entity
public class SubElement {

    private String nameSubElement;

}

问题来了,当我们查看数据库时,列表的subElement被反序列化并以相反的顺序保存:元素c为id 1,元素b为id 2,元素a为id 3,但是我们需要完全相反,因为前端的顺序是相反的。我试图按列表更改SortedSet,但是没有用。

1 个答案:

答案 0 :(得分:0)

您需要实现Comparable接口并为compareTo方法接口提供实现,因为@SortNatural使用与实体实现的Comparable进行排序。