我收到JSON
,但不是按字母顺序排列。如何 排序 json
由KEY
组成?
JSON:
{"b":"3","c":"1","a":"4"}
预期产出:
{"a":"4","b":"3","c":"1"}
请帮我解决这个问题。我真的很感谢你的帮助!谢谢!
答案 0 :(得分:1)
您可以使用jackson库。
首先将jackson添加到maven依赖项中。
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.8.7</version>
</dependency>
然后使用下面的代码。
String jsonData = "{\"e\":\"6\",\"f\":\"1\",\"b\":\"3\",\"c\":\"1\",\"a\":\"4\"}";
ObjectMapper om = new ObjectMapper();
om.configure(SerializationFeature.ORDER_MAP_ENTRIES_BY_KEYS, true);
Map<String, Object> map = om.readValue(jsonData, HashMap.class);
String json = om.writeValueAsString(map);
System.out.println(json); // result : {"a":"4","b":"3","c":"1","e":"6","f":"1"}
当我测试它时,我会以排序的形式获得输出。
{&#34;&#34;:&#34; 4&#34;&#34; B&#34;:&#34; 3&#34;&#34; C&#34;:& #34; 1&#34;&#34; E&#34;:&#34; 6&#34;&#34; F&#34;:&#34; 1&#34;}
答案 1 :(得分:1)
因此,这是一种无需使用外部库即可针对按字母顺序对JSON对象按字母顺序排序的解决方案(适用于Android Studio)。 sortedJSON是一种键,其键是按字母顺序排序的。
try{
JSONObject jo = new JSONObject();
jo.put("g", "9");
jo.put("t", "8");
jo.put("r", "7");
jo.put("d", "6");
jo.put("c", "5");
jo.put("b", "4");
jo.put("a", "1");
Map<String, String> joToMap = new HashMap<>();
Iterator<String> keysItr = jo.keys();
while (keysItr.hasNext()) {
String key = keysItr.next();
Object value = jo.get(key);
joToMap.put(key, value.toString()); //since value is string so convert toString; depend on your value type
}
Map<String, String> sortedMap = new TreeMap<>(joToMap); //this will auto-sort by key alphabetically
JSONObject sortedJSON = new JSONObject(); //recreate new JSON object for sorted result
for (Map.Entry<String, String> entry : sortedMap.entrySet()) {
sortedJSON.put(entry.getKey(), entry.getValue());
// result will be {"a":"1","b":"4","c":"5","d":"6","g":"9","r":"7","t":"8"}
}
} catch (Exception e){
}
答案 2 :(得分:0)
您可以使用地图来实现此目的,然后根据地图键对地图进行排序。之后将其插入JSON对象。
在您的情况下,将地图声明为:
Map<String,Integer> mapName = new HashMap<>();