首页 > 解决方案 > 基于键的Java JSON数组排序

问题描述

我有一个 JSON 数组,想根据 Java 中的键(字母数字)对其进行排序。

[{"exe":"12"},{"pdf":"23"},{"abc":"56"},{"zqr":"9"},{"cpr":"15"}]

排序后如何显示为:

[{"abc":"56"},{"cpr":"15"},{"exe":"12"},{"pdf":"23"},{"zqr":"9"}]

标签: java

解决方案


设置您的 POM.XML:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.9.8</version><!-- or higher version -->
</dependency>

像这样的Java代码:

public static void main(String[] args) throws Exception {
    
    String json = "[{\"exe\":\"12\"},{\"pdf\":\"23\"},{\"abc\":\"56\"},{\"zqr\":\"9\"},{\"cpr\":\"15\"}]";
    ObjectMapper mapper = new ObjectMapper();
    List<LinkedHashMap> parsedJson = mapper.readValue(json, List.class);
    
    Map<String, String> sortedMap = new TreeMap<>();
    
    for (LinkedHashMap<String, String> elementMap : parsedJson) {
        Entry<String, String> elementEntry = elementMap.entrySet().iterator().next();
        sortedMap.put(elementEntry.getKey(), elementEntry.getValue());
    }
            
    System.out.println(mapper.writeValueAsString(sortedMap));
}

可能有更好的方法,但现在......


推荐阅读