首页 >Java >java教程 >如何在 HttpServletRequest 中访问 JSON POST 数据?

如何在 HttpServletRequest 中访问 JSON POST 数据?

Susan Sarandon
Susan Sarandon原创
2024-12-25 20:44:10782浏览

How Do I Access JSON POST Data in an HttpServletRequest?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn