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
让我们举个例子。我有一个 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 ,它就会找到与键关联的值!即使排在最后。
Field/member/attributes 没有顺序,就此 JSON 数据结构而言,"order" 无关紧要。
我能想象到您担心订单的唯一原因是 printing/presentation 目的。在那种情况下,我建议您自己手动构造 JSON 字符串。
可能有点晚了,但以防万一有这个注释@JsonPropertyOrder