java - 如何在 Java 中将 HTTP 请求主体转换为 JSON 对象

标签 java json http sling

我正在尝试找到一个 Java lib/api,它允许我将 HTTP 请求 POST 正文的内容转换为 JSON 对象。

理想情况下,我想使用 Apache Sling库(因为它们自然地暴露在我的容器中)。

我找到的最接近它的是:org.apache.sling.commons.json.http,它将 header 转换为 JSON。

HTTP Post 正文格式; key1=value1&key2=value2&..&keyn=valueN 所以我假设那里有东西,但我没能找到它。

如果某些内容尚不存在,我可能只需要使用自定义 JSONTokener (org.apache.sling.commons.json.JSONTokener) 来执行此操作。想法?

谢谢

最佳答案

假设您使用的是 HttpServlet和一个像 json-simple 这样的 JSON 库你可以这样做:

public JSONObject requestParamsToJSON(ServletRequest req) {
  JSONObject jsonObj = new JSONObject();
  Map<String,String[]> params = req.getParameterMap();
  for (Map.Entry<String,String[]> entry : params.entrySet()) {
    String v[] = entry.getValue();
    Object o = (v.length == 1) ? v[0] : v;
    jsonObj.put(entry.getKey(), o);
  }
  return jsonObj;
}

使用示例:

public void doPost(HttpServletRequest req, HttpServletResponse res) {
  JSONObject jsonObj = requestParamsToJSON(req);
  // Now "jsonObj" is populated with the request parameters.
  // e.g. {"key1":"value1", "key2":["value2a", "value2b"], ...}
}

关于java - 如何在 Java 中将 HTTP 请求主体转换为 JSON 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7085545/

相关文章:

java - Java 中 BlockingQueue 上的并发 put 调用

json - 将查询结果转换为 hstore 时保留列名

javascript - URL 为 AJAX 请求在 jQuery 中编码一个字符串

http - 如何启用nginx代理通行证?

运行 Spark Java 程序时出现 java.lang.NoSuchMethodError

java - Spring ThreadPoolExecutor Factory Bean工厂bean的使用方法

javascript - JavaScript 中的 API 调用

arrays - 未定义的 Angular 日历异步 http 'map'

java - 除了客户端编码帮助之外,如果在对象为空时抛出 NPE,Kotlin 中的 '!!' 运算符有什么好处?

ios - Swift2 - 在嵌套 JSON 中使用 Alamofire 3