HTTPリクエストJava本文をJSONオブジェクトに変換できるPOST lib/apiを見つけようとしています。
理想的には、 Apache Sling ライブラリを使用したいと思います(コンテナ内で自然に公開されるため)。
私が見つけた最も近いもの:ヘッダーをJSONに変換するorg.Apache.sling.commons.json.http
。
HTTPPost本文は次の形式です。 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"], ...}
}
import org.json.JSONObject;
JSONObject json = new JSONObject(request.getParameterMap())
Apache Commons Beanutils を試すことをお勧めします。
ServeltRequest request;
Map map = request.getParameterMap();
MyObject object = new MyObject();
BeanUtils.populate(object, map);
String json = object.toJSON() //using any JSON library
ジャクソンも良い選択肢です-それは春に広く使われています。チュートリアルは次のとおりです。 http://wiki.fasterxml.com/JacksonInFiveMinutes
これを独自の回答にして申し訳ありませんが、明らかに私の評判では、回答にコメントを追加することはできません JavaでHTTPリクエスト本文をJSONオブジェクトに変換する方法 maerics。
また、リクエストパラメータを繰り返し処理しますが、任意のjsonライブラリを使用する代わりに、slingによって提供されるJSONObjectを使用します。 http://sling.Apache.org/apidocs/sling6/org/Apache/sling/commons/json/JSONObject.html