toJson() 时是否可以更改属性的顺序?

Is it possible to change order of attributes when toJson()?

让我们举个例子。我有一个 pojo class 如下。

public class MyRecord{
    private String name;
    private String id;

    //constructors and getters,setters
}

当我得到上面的 toJson(new MyRecord("MyName","myId") 输出时,我可以得到。

{
  "name": "MyName",
  "id": "123" 
}

并且我继承了一个如下添加日期时间。

public class MyRecordWithDateTime extends MyRecord{
        private String DateTime;           

        //constructors and getters,setters
}

所以当我调用 toJson(new MyRecordWithDateTime("2016-01-01", "MyName", "myId"))

输出是这样的

{
  "name": "MyName",
  "id": "123",
  "dateTime": "2016-01-01" 
}

但我实际上需要如下。 (日期时间应该排在第一位。)

{          
  "dateTime": "2016-01-01", 
  "name": "MyName",
  "id": "123"
}

有没有办法通过保留继承来做到这一点?

在将其放入 JSON 文件之前,您可以尝试制作一个有序列表(LinkedList、ArrayList 或类似的东西),然后根据需要对其进行排序,然后将其放入 JSON.

但显然,还有比我更好的想法!!

但事实是:JSON不需要排序!您只需使用 getter ,它就会找到与键关联的值!即使排在最后。

JSON 集合中的

Field/member/attributes 没有顺序,就此 JSON 数据结构而言,"order" 无关紧要。

我能想象到您担心订单的唯一原因是 printing/presentation 目的。在那种情况下,我建议您自己手动构造 JSON 字符串。

可能有点晚了,但以防万一有这个注释@JsonPropertyOrder