在 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中文网其他相关文章!