ホームページ >Java >&#&チュートリアル >HttpServletRequest 内の JSON POST データにアクセスするにはどうすればよいですか?
HttpServletRequest での JSON POST データへのアクセス
データを JSON 形式でサーブレットに HTTP POST する場合、関係するさまざまなデータ エンコーディングを理解する必要があります。デフォルトでは、サーブレットは 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 中国語 Web サイトの他の関連記事を参照してください。