java代码JSONObject排序问题

昨天撸了一个数据展示接口,业务很简单,但是封装了三层将近20个JSONObject对象,感觉命名都命的想死。

写完开开心心提交代码,部署开发环境准备摸鱼,前端跑过来说:你这屌毛,你把数据的顺序搞好啊,不然我遍历出来的顺序都是乱的。

“不可能啊,我都是按照文档顺序来的,我这命名都复制了一大biang,都是按顺序put的”。

赶紧扭头打开代码一看,虽然命名很繁琐纷乱,但是段落顺序和字段顺序都是规整的,postman一调,哦豁,确实字段顺序发生了改变。我甚至不信邪的把字段顺序调换一下再跑一遍,输出的结果还是一样的。没得办法,百度大法好。搜完才发现问题所在。

因为JsonObject内部是用Hashmap来存储的,所以输出是按key的排序来的。

如果要让JsonObject按固定顺序(put的顺序)排列,可以修改JsonObject的定义HashMap改为LinkedHashMap。

public JSONObject() {  
        this.map = new LinkedHashMap();  //new HashMap();  
}  

即定义JsonObject可以这样:JSONObject jsonObject =new JSONObject(newLinkedHashMap());

这样定义的JSONObject对象就能满足顺序不变的要求了。

 

关于map的类型及特性,八股文倒是背过很多遍,但是没想到能这么用。

你可能感兴趣的:(java,开发语言)