在Java web應用中,經(jīng)常需要接收并解析前端傳過來的JSON數(shù)據(jù)。Java提供了很多解析JSON的工具,比如使用JSON-lib、Fastjson等。這里以使用Java Request對象為例,介紹如何解析JSON數(shù)據(jù)。
首先,在Java代碼中接收JSON數(shù)據(jù),可以使用Request的getParameter(String name) 方法獲取到JSON數(shù)據(jù)。但是getParameter方法只能獲取普通的鍵值對參數(shù),無法獲取JSON字符串。因此需要使用getReader()方法獲取輸入流并讀取JSON字符串。
// 獲取Request對象 HttpServletRequest request = (HttpServletRequest) req; // 獲取輸入流 BufferedReader reader = request.getReader(); // 定義JSON字符串 StringBuilder sb = new StringBuilder(); String line = null; // 讀取輸入流中的內(nèi)容 while ((line = reader.readLine()) != null) { sb.append(line); } // 關(guān)閉流 reader.close(); // 解析JSON字符串 JSONObject jsonObj = JSONObject.fromObject(sb.toString());
在上面的代碼中,首先獲取了Request對象,然后通過getReader()方法獲取BufferedReader流,使用StringBuilder來存儲流中的內(nèi)容,最后將字符串轉(zhuǎn)換為JSONObject對象。
讀取JSON數(shù)組也可以使用類似的方法,只需要將字符串轉(zhuǎn)換為JSONArray對象即可。
// 解析JSON數(shù)組 JSONArray jsonArray = JSONArray.fromObject(sb.toString());
現(xiàn)在就可以愉快地使用Java解析前端傳過來的JSON數(shù)據(jù)了。