保证json 读取和输出的顺序
用到是阿里巴巴的fastjson,读取只需要加上 Feature.OrderedField 参数
JSONObject.parseObject(param,Feature.OrderedField)
写出则需要将实体类加上注解
@AllArgsConstructor
@NoArgsConstructor
@Data
class People {
@JSONField(ordinal = 1)
private Integer id;
@JSONField(ordinal = 2)
private String name;
@JSONField(ordinal = 3)
private Map<String,Object> map;
}
但是不会保证嵌套的map是有序的,但是我们可以使用LinkedHashMap进行存储数据,LinkedHashMap是双端队列,存储的是有序的。
测试代码如下
public class JsonTest {
public static void main(String[] args) {
People people = new People();
Map<String, Object> map = new LinkedHashMap<>();
map.put("aa",123);
map.put("ww",123);
map.put("bb",233);
map.put("cc",233);
map.put("dd",233);
map.put("ee",233);
map.put("ff",233);
map.put("rr",233);
map.put("566",233);
map.put("88",233);
map.put("99",233);
map.put("55",233);
map.put("00",233);
people.setId(1002);
people.setName("222");
people.setMap(map);
System.out.println(JSON.toJSONString(people));
}
}
运行结果
{
"id":1002,
"name":"222",
"map":{
"aa":123,
"ww":123,
"bb":233,
"cc":233,
"dd":233,
"ee":233,
"ff":233,
"rr":233,
"566":233,
"88":233,
"99":233,
"55":233,
"00":233
}
}
使用Gson直接可以顺序读取和顺序输出,不过没有fastjosn快。