【问题标题】:How to read an array of JSON objects sent from ajax in java servlet [duplicate]如何在java servlet中读取从ajax发送的JSON对象数组[重复]
【发布时间】:2016-12-10 06:01:20
【问题描述】:

这是我的代码:

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"
}]

在 servlet 中读取和迭代的正确 Java 代码应该是什么?目前我使用的是org.json.simple。此外,如果我喜欢

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

它抛出一个错误说undefined constructor。什么是正确的解决方案?另请注意,我不想使用 gson。

【问题讨论】:

  • 与您的问题无关,但请删除async: false。使用它真的很糟糕,因为它会在请求期间锁定浏览器 UI

标签: java jquery json ajax servlets


【解决方案1】:
  1. 您最好使用 java Pojo,它与您的 json 键包含的属性相同。例如:student_id、course_id 等。
  2. 然后相应地将 json 转换为您的 Pojo 类....例如:

    • 如果您的 json 包含转换为简单 pojo 的对象
    • 如果您的 json 包含数组,那么您也可以使用数组列表

例如:

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

【讨论】:

  • 谢谢。我用杰克逊在列表中列出了它。 :)
猜你喜欢
  • 2013-11-03
  • 2012-04-07
  • 1970-01-01
  • 2017-12-30
  • 2017-07-27
  • 2014-10-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多