如何通过KEY(Java)按字母顺序创建JSON

时间:2017-03-11 07:35:05

标签: java json

我收到JSON,但不是按字母顺序排列。如何 排序 jsonKEY组成? JSON:

{"b":"3","c":"1","a":"4"}

预期产出:

{"a":"4","b":"3","c":"1"}

请帮我解决这个问题。我真的很感谢你的帮助!谢谢!

3 个答案:

答案 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<>();