我正在尝试找到一个 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/