基于密钥的javajson数组排序
我有一个JSON数组,希望根据Java中的键(字母数字)对其进行排序 排序后如何显示为:基于密钥的javajson数组排序,java,Java,我有一个JSON数组,希望根据Java中的键(字母数字)对其进行排序 排序后如何显示为: [{"abc":"56"},{"cpr":"15"},{"exe":"12"},{"pdf":"23"},{"zqr":"9"}] 这有点难看,但我想不出如何更干净地处理任意的关键问题。它确实有效:
[{"abc":"56"},{"cpr":"15"},{"exe":"12"},{"pdf":"23"},{"zqr":"9"}]
这有点难看,但我想不出如何更干净地处理任意的关键问题。它确实有效:
List<Map<String, String>> list = (List<Map<String, String>>)JsonEncodeDecode.decode("[{\"exe\":\"12\"},{\"pdf\":\"23\"},{\"abc\":\"56\"},{\"zqr\":\"9\"},{\"cpr\":\"15\"}]\n");
list.sort(Comparator.comparing(a -> (String)a.keySet().toArray()[0]));
System.out.println(JsonEncodeDecode.encode(list));
我希望您有其他方法来生成初始列表,而不是将其硬编码到代码中。这只是为了表明排序是有效的。使用以下内容设置POM.XML:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version><!-- or higher version -->
</dependency>
com.fasterxml.jackson.core
杰克逊数据绑定
2.9.8
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));
}
publicstaticvoidmain(字符串[]args)引发异常{
字符串json=“[{\'exe\':\'12\',{\'pdf\':\'23\',{\'abc\':\'56\',{\'zqr\':\'9\',{\'cpr\':'15\'”;
ObjectMapper mapper=新的ObjectMapper();
List parsedJson=mapper.readValue(json,List.class);
Map sortedMap=newtreemap();
for(LinkedHashMap元素映射:parsedJson){
Entry elementEntry=elementMap.entrySet().iterator().next();
sortedMap.put(elementEntry.getKey(),elementEntry.getValue());
}
System.out.println(mapper.writeValueAsString(sortedMap));
}
可能有更好的方法,但现在…在建议的示例中,有一个公共密钥,这在我的示例中不存在
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.9.8</version><!-- or higher version -->
</dependency>
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));
}