一尘不染

如何在Java中将HTTP请求正文转换为JSON对象

json

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

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

我找到的最接近org.apache.sling.commons.json.http的文件:将标头转换为JSON。

HTTP Post正文采用以下格式:key1=value1&key2=value2&..&keyn=valueN所以我认为那里有些东西,但是我还没找到。

如果某些东西不存在,我可能只需要使用自定义JSONTokenerorg.apache.sling.commons.json.JSONTokener)即可。有什么想法吗?

谢谢


阅读 298

收藏
2020-07-27

共1个答案

一尘不染

假设您使用的是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"], ...}
}
2020-07-27