首頁 > Java > java教程 > 如何在 HttpServletRequest 中存取 JSON POST 資料?

如何在 HttpServletRequest 中存取 JSON POST 資料?

Susan Sarandon
發布: 2024-12-25 20:44:10
原創
795 人瀏覽過

How Do I Access JSON POST Data in an HttpServletRequest?

在HttpServletRequest 中存取JSON POST 資料

將JSON 格式的HTTP POST 資料傳送到servlet 時,有必要的不同資料編碼。預設情況下,Servlet 可以使用 request.getParameter() 檢索參數。但是,對於 JSON 數據,不使用“application/x-www-form-urlencoded”的標準編碼方案。

要檢索 JSON POST 數據,您需要使用處理原始資料流的自訂解碼器來自 request.getReader()。以下是使用 org.json 套件的範例:

public void doPost(HttpServletRequest request, HttpServletResponse response)
  throws ServletException, IOException {

  StringBuffer jb = new StringBuffer();
  String line = null;
  try {
    BufferedReader reader = request.getReader();
    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");
  }

  // Work with the data using methods like...
  // int someInt = jsonObject.getInt("intParamName");
  // String someString = jsonObject.getString("stringParamName");
  // JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName");
  // JSONArray arr = jsonObject.getJSONArray("arrayParamName");
  // etc...
}
登入後複製

此程式碼從請求中讀取 JSON 資料流,使用 org.json 套件解析,並將結果儲存在 JSONObject 中。然後,您可以使用 jsonObject.getInt()、jsonObject.getString() 等方法存取 JSON 參數。

請注意,此方法不僅限於 JSON 資料。您可以使用相同的技術來處理未編碼為鍵值對的任何類型的自訂 POST 資料。

以上是如何在 HttpServletRequest 中存取 JSON POST 資料?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板