Mengakses JSON POST Data dalam HttpServletRequest
Apabila HTTP POSTing data dalam format JSON ke servlet, adalah perlu untuk memahami pengekodan data berbeza yang terlibat . Secara lalai, servlet boleh mendapatkan semula parameter menggunakan request.getParameter(). Walau bagaimanapun, untuk data JSON, skema pengekodan standard "application/x-www-form-urlencoded" tidak digunakan.
Untuk mendapatkan semula data JSON POST, anda perlu menggunakan penyahkod tersuai yang memproses aliran data mentah daripada request.getReader(). Berikut ialah contoh menggunakan pakej org.json:
public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { StringBuffer jb = new StringBuffer(); String line = null; try { BufferedReader reader = request.getReader(); while ((line = reader.readLine()) != null) jb.append(line); } catch (Exception e) { /*report an error*/ } try { JSONObject jsonObject = HTTP.toJSONObject(jb.toString()); } catch (JSONException e) { // crash and burn throw new IOException("Error parsing JSON request string"); } // Work with the data using methods like... // int someInt = jsonObject.getInt("intParamName"); // String someString = jsonObject.getString("stringParamName"); // JSONObject nestedObj = jsonObject.getJSONObject("nestedObjName"); // JSONArray arr = jsonObject.getJSONArray("arrayParamName"); // etc... }
Kod ini membaca aliran data JSON daripada permintaan, menghuraikannya menggunakan pakej org.json dan menyimpan hasilnya dalam JSONObject. Anda kemudiannya boleh mengakses parameter JSON menggunakan kaedah seperti jsonObject.getInt(), jsonObject.getString(), dan sebagainya.
Perhatikan bahawa pendekatan ini tidak terhad kepada data JSON. Anda boleh menggunakan teknik yang sama untuk memproses sebarang jenis data POST tersuai yang tidak dikodkan sebagai pasangan nilai kunci.
Atas ialah kandungan terperinci Bagaimanakah Saya Mengakses Data JSON POST dalam HttpServletRequest?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!