Java Stream是Java 8引入的一種新特性,它可以通過函數式編程的方式來處理集合型數據,使代碼更加簡潔易懂。而JSON(JavaScript Object Notation)則是一種輕量級的數據交換格式,常用于前端與后端數據的交互。在Java中,我們可以使用Stream API來處理JSON數據。
// 示例JSON數據 String json = "{ \"name\": \"張三\", \"age\": 18, \"gender\": \"male\" }"; // 將JSON數據轉為Map Map<String, Object> map = new HashMap<>(); try { map = new ObjectMapper().readValue(json, new TypeReference<Map<String, Object>>() {}); } catch (IOException e) { e.printStackTrace(); } // 使用Stream API處理Map map.entrySet().stream() .forEach(entry -> System.out.println(entry.getKey() + ":" + entry.getValue()));
在上面的代碼中,我們使用Jackson庫的ObjectMapper將JSON數據轉換成了一個Map對象。然后使用Stream API的forEach方法遍歷Map中的每一個鍵值對,并輸出鍵和值。這樣我們就可以很方便地處理JSON數據了。
除此之外,Java Stream還可以和JSON解析庫一起使用,從而實現更多復雜的功能。比如,我們可以使用Stream API篩選JSON數組中的某些元素:
// 示例JSON數據 String json = "[{ \"name\": \"張三\", \"age\": 18, \"gender\": \"male\" }, { \"name\": \"李四\", \"age\": 20, \"gender\": \"female\" }]"; // 將JSON數據轉為List List<Map<String, Object>> list = new ArrayList<>(); try { list = new ObjectMapper().readValue(json, new TypeReference<List<Map<String, Object>>>() {}); } catch (IOException e) { e.printStackTrace(); } // 使用Stream API篩選元素 list.stream() .filter(map -> map.get("age") < 20) .forEach(System.out::println);
在上面的代碼中,我們首先將JSON數據轉為一個List,然后使用Stream API的filter方法篩選出年齡小于20歲的元素,并將其輸出。這樣我們就可以方便地對JSON數據進行篩選、過濾、轉換等操作。