>Java >java지도 시간 >HttpServletRequest에서 JSON POST 데이터에 어떻게 액세스합니까?

HttpServletRequest에서 JSON POST 데이터에 어떻게 액세스합니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-25 20:44:10787검색

How Do I Access JSON POST Data in an HttpServletRequest?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.