首先我们看一下遇到的问题
(以下JSON均为com.alibaba.fastjson)
-
JSON输出/循环有序
JSONObject jsonObject = new JSONObject();
jsonObject.put("c","3");
jsonObject.put("a","1");
jsonObject.put("d","4");
jsonObject.put("b","2");
System.out.println(jsonObject);
期望的结果 | 实际的结果 |
{"c":"3","a":"1","d":"4","b":"2"} | {"a":"1","b":"2","c":"3","d":"4"} |
解决方案
JSONObject jsonObject = new JSONObject(new LinkedHashMap<>());
jsonObject.put("c","3");
jsonObject.put("a","1");
jsonObject.put("d","4");
jsonObject.put("b","2");
System.out.println(jsonObject);
-
字符串转JSON有序
String str = "{\"c\":\"3\",\"a\":\"1\",\"d\":\"4\",\"b\":\"2\"}";
JSONObject jsonObject = JSONObject.parseObject(str);
System.out.println(jsonObject);
期望的结果 | 实际的结果 |
{"c":"3","a":"1","d":"4","b":"2"} | {"a":"1","b":"2","c":"3","d":"4"} |
解决方案
String str = "{\"c\":\"3\",\"a\":\"1\",\"d\":\"4\",\"b\":\"2\"}";
LinkedHashMap linkedHashMap = JSONObject.parseObject(str, LinkedHashMap.class, Feature.OrderedField);
JSONObject jsonObject = new JSONObject(true);
jsonObject.putAll(linkedHashMap);
System.out.println(jsonObject);