在Java中,JSON是一種重要的數據交換格式。JSON的特點之一就是可以嵌套和包含,而且存儲數據的順序是可以改變的。
但是,有的時候我們希望輸出JSON的時候能夠保持一定的順序,這需要借助一些工具庫來實現。
// 假設我們有一個包含多個屬性的JSON對象 String jsonStr = "{\n" + " \"name\": \"Tom\",\n" + " \"age\": 23,\n" + " \"address\": {\n" + " \"province\": \"Guangdong\",\n" + " \"city\": \"Shenzhen\",\n" + " \"street\": \"Huaqiang Road\"\n" + " }\n" + "}"; // 使用Jackson庫來解析JSON ObjectMapper objectMapper = new ObjectMapper(); JsonNode jsonNode = objectMapper.readTree(jsonStr); // 使用TreeMap來保存屬性順序,key為屬性名,value為屬性值 MaporderedMap = new TreeMap<>(); jsonNode.fields().forEachRemaining(entry ->orderedMap.put(entry.getKey(), entry.getValue())); // 將有序map轉換為JSON格式 String orderedJsonStr = objectMapper.writeValueAsString(orderedMap); System.out.println(orderedJsonStr);
在上面的代碼中,我們使用了Java中的Jackson庫來解析JSON字符串,并使用TreeMap來保存屬性的順序。然后,我們將有序map轉換為JSON字符串,最終得到的輸出結果是:
{"address":{"city":"Shenzhen","province":"Guangdong","street":"Huaqiang Road"},"age":23,"name":"Tom"}
可以看到,JSON的屬性順序已經被我們控制了。這個方法同樣適用于嵌套的JSON對象。
下一篇css 單行文本截斷