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的类型及特性,八股文倒是背过很多遍,但是没想到能这么用。
下一篇:
如何卸载mysql教程(完全卸载)