Map转json数据出现顺序乱的问题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Map转json数据出现顺序乱的问题相关的知识,希望对你有一定的参考价值。
参考技术A #Map转json数据出现顺序乱的问题,如果需要保持顺序,可以使用JSONObject 对象的toString()方法;public static void main(String[] args)
Map<String, String> map = new LinkedHashMap<String, String>();
map.put("3", "ccccc");
map.put("1", "aaaaa");
map.put("2", "bbbbb");
map.put("4", "ddddd");
System.out.println("默认自动排序");
System.out.println(ResultVOUtil.success(map));
输出结果:
自动排序
"msg":"成功","code":"0","data":"1":"aaaaa","2":"bbbbb","3":"ccccc","4":"ddddd"
//////////////////////////////////解决方案/////////////////////////////////////////////////////
JSON json = JSONUtil.parse(map);
JSONObject obj = new JSONObject();
obj.put("code", '0');
obj.put("msg", "成功");
obj.put("data", json);
System.out.println("保持原始顺序");
System.out.println(obj.toString());
输出结果:
保持原始顺序
"msg":"成功","code":"0","data":"3":"ccccc","1":"aaaaa","2":"bbbbb","4":"ddddd"
Json,String,Map之间的转换
前提是String的格式是map或json类型的
String 转Json
JSONObject jasonObject = JSONObject.fromObject(str);
String 转Map
JSONObject jasonObject = JSONObject.fromObject(str);
Map map = (Map)jasonObject;
在网页之间传递数据出现中文乱码解决方案:
例如请求接口返回一个map或json数据,包含中文
1,先将map或json转成string格式,如果是map类型的,先转成json JSONObject json=new JSONObject(map); json.toJSONString();转成string格式
2,利用URLEncoder.encoder(str,"UTF-8")或"GBK"对string加密处理,发送加密后的str
3,在接受端,收到str后,URLDecoder.decoder(str,"UTF-8")解密成正常str,一般要转成json需要去掉开始结尾的引号,str=str.substring(1,str.length()-1),再用JSONObject.formObject(str)将str转成json;之后需要转map,Map map = (Map)json即可
以上是关于Map转json数据出现顺序乱的问题的主要内容,如果未能解决你的问题,请参考以下文章