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数据出现顺序乱的问题的主要内容,如果未能解决你的问题,请参考以下文章

fastjson解析超长json串以及转成list,map等方法实例

java数据库转json

Json数据转Map

Json,String,Map之间的转换

JAVA中json字符串如何转化为map对象,获取数据?

java如何将json的数据转换为map或者list类型的?