ホームページ >Java >&#&チュートリアル >HttpServletRequest から JSON POST データを取得するにはどうすればよいですか?
HttpServletRequest から JSON POST データを取得する
JSON エンコードされたデータを使用して HTTP POST リクエストを実行する場合、データの違いを理解することが重要です標準の HTML フォーム送信と比較したエンコーディング。この場合、HttpServletRequest.getParameter() メソッドを介して POST データに自動的にアクセスすることはできません。
JSON POST データを取得するには、HttpServletRequest から取得した生のデータ ストリームを処理できるカスタム デコーダを利用する必要があります。 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 データを読み取り、それを JSONObject に解析して、その中のデータへのアクセスを提供します。物体。その後、必要に応じて JSON データを操作し、必要なパラメーターと値を抽出できます。
このアプローチは、従来の「application/x-www-form」の代わりに JSON でエンコードされた POST データを使用する場合に必要であることに注意してください。 -urlencoded」は、標準の HTML フォームで使用されるエンコードです。カスタム デコーダを利用すると、サーブレット アプリケーションで JSON データを効率的に取得して処理できます。
以上がHttpServletRequest から JSON POST データを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。