在HttpServletRequest 中存取JSON POST 資料
當在正文中使用JSON 資料發送HTTP POST 請求時,檢索請求資料是要求是否使用傳統的getParameter 方法。這是因為 getParameter 僅適用於以「application/x-www-form-urlencoded」格式編碼的鍵值對。
但是,對於 JSON 資料流,需要自訂方法。
JSON資料的自訂解碼器
要存取JSON POST數據,需要利用BufferedReader來處理原始資料流:
BufferedReader reader = request.getReader();
使用org.json套件的範例
下面是一個使用流行的org.json 函式庫來解碼JSON POST 資料的範例:
@Override public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer jb = new StringBuffer(); String line = null; try { while ((line = reader.readLine()) != null) jb.append(line); } catch (Exception e) { /*report an error*/ } try { JSONObject jsonObject = HTTP.toJSONObject(jb.toString()); } catch (JSONException e) { // crash and burn throw new IOException("Error parsing JSON request string"); } }
此程式碼讀取JSON 資料並將其轉換為JSONObject 以進行進一步處理。然後,您可以使用 getInt、getString 和 getJSONArray 等方法來提取您需要的特定資料。
以上是如何使用 HttpServletRequest 存取 Servlet 中的 JSON POST 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!