Live2D

保证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快。

posted @ 2022-07-07 11:57  没有梦想的java菜鸟  阅读(833)  评论(0编辑  收藏  举报