2016-08-04 43 views
0

這是我的代碼:如何閱讀JSON對象數組從阿賈克斯派去的Java Servlet

json = JSON.stringify(jsonObj); 

$.ajax({ 
    type: 'post', 
    url: 'PostStudentMarks', 
    async: false, 
    data: json, 
    contentType: "application/json", 
    dataType: 'json', 
    success: function (response) { 
     alert("Marks Uploaded"); 
    }, 
    error: function(err) { 
     console.log(arguments); 
    } 
}); 

jsonObj包含這樣

[{ 
    "student_id": "11204172" 
},{ 
    "course_id": "PHY101", 
    "semester": "1", 
    "marks": "11" 
},{ 
    "course_id": "CSE401",  
    "semester": "2", 
    "marks": "22" 
}] 

數據應該是什麼在正確的Java代碼servlet讀取並遍歷它?目前我正在使用org.json.simple。此外,如果我喜歡

JSONObject jsonObject = new JSONObject(request.getParameter("json")); 
JSONArray json = new JSONArray(jsonObject); 

它會拋出一個錯誤,說undefined constructor。什麼是適當的解決方案?另外請注意,我不想使用gson。

+0

與您的問題無關,但請刪除'async:false'。由於在請求期間鎖定瀏覽器UI,所以使用它是非常糟糕的做法 –

回答

0
  1. 你最好使用一個Java Pojo,它將擁有與你的JSON鍵相同的屬性。例如:student_id數據,COURSE_ID等
  2. 然後JSON相應轉換爲你的POJO類....例如:

    • 如果你的JSON包含如果你的JSON包含對象數組的轉換,以簡單的POJO
    • 那麼你可以使用數組列表以及

如:

ObjectMapper mapper = new ObjectMapper(); 
String jsonInString = "{'name' : 'gokul'}"; 
Staff obj = mapper.readValue(jsonInString, Staff.class); 
+0

謝謝。我做了傑克遜列表裏面的列表。 :) – user6676876

0

創建一個pojo類,其實例變量名稱與json參數匹配並使用下面的代碼綁定它 ObjectMapper mapper = new ObjectMapper(); String json =從請求中讀取的值 YourObject(示例學生對象)obj = mapper.readValue(json,YourObject.class);