我正在尝试找到一个Java lib / api,它将允许我将HTTP Request POST主体的内容转换为JSON对象。
理想情况下,我想使用Apache Sling库(因为它们自然暴露在我的容器中)。
我找到的最接近org.apache.sling.commons.json.http的文件:将标头转换为JSON。
org.apache.sling.commons.json.http
HTTP Post正文采用以下格式:key1=value1&key2=value2&..&keyn=valueN所以我认为那里有些东西,但是我还没找到。
key1=value1&key2=value2&..&keyn=valueN
如果某些东西不存在,我可能只需要使用自定义JSONTokener(org.apache.sling.commons.json.JSONTokener)即可。有什么想法吗?
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"], ...} }