Heim >Java >javaLernprogramm >Wie greife ich in einem HttpServletRequest auf JSON-POST-Daten zu?

Wie greife ich in einem HttpServletRequest auf JSON-POST-Daten zu?

Susan Sarandon
Susan SarandonOriginal
2024-12-25 20:44:10787Durchsuche

How Do I Access JSON POST Data in an HttpServletRequest?

Zugriff auf JSON-POST-Daten in HttpServletRequest

Beim HTTP-POSTing von Daten im JSON-Format an ein Servlet ist es notwendig, die verschiedenen beteiligten Datenkodierungen zu verstehen . Standardmäßig können Servlets Parameter mit request.getParameter() abrufen. Für JSON-Daten wird jedoch nicht das Standardcodierungsschema „application/x-www-form-urlencoded“ verwendet.

Um JSON-POST-Daten abzurufen, müssen Sie einen benutzerdefinierten Decoder verwenden, der den Rohdatenstrom verarbeitet aus request.getReader(). Hier ist ein Beispiel mit dem Paket 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...
}

Dieser Code liest den JSON-Datenstrom aus der Anfrage, analysiert ihn mit dem Paket org.json und speichert das Ergebnis in einem JSONObject. Anschließend können Sie mit Methoden wie jsonObject.getInt(), jsonObject.getString() usw. auf die JSON-Parameter zugreifen.

Beachten Sie, dass dieser Ansatz nicht auf JSON-Daten beschränkt ist. Sie können dieselbe Technik verwenden, um jede Art von benutzerdefinierten POST-Daten zu verarbeiten, die nicht als Schlüssel-Wert-Paare codiert sind.

Das obige ist der detaillierte Inhalt vonWie greife ich in einem HttpServletRequest auf JSON-POST-Daten zu?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn