【问题标题】:Passing list of JSON objects to Controller via AJAX call通过 AJAX 调用将 JSON 对象列表传递给控制器
【发布时间】:2020-01-27 13:13:55
【问题描述】:

下面是我要传递的数据

var data=[{"TAG":"Taxes","REMARKS":"Enter Remarks"},{"TAG":"Taxes","REMARKS":"Enter Remarks"}];

Ajax 调用将数据发布到控制器:

$.ajax({
    type: "POST",
    url: "rest/url",
    data: JSON.stringify(data),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (result) {                
        console.log(result);
    },
    error : function(xml, status, xhr) {            
        obj = (xml.responseText);
    }
});
@RequestMapping(value = "/url", method = RequestMethod.POST,consumes="application/json",produces="application/json")
public @ResponseBody
LinkedHashMap<String, ArrayList> getData(@RequestBody List<DataDTO> data,HttpServletRequest request1) {
System.out.println("Inside Controller :"+data.getClass())// getting Arraylist object
DataDTO dto1=data.get(0);// getting class cast exception

在上面的代码中,我能够以 List 格式获取控制器中的数据,但是当我将对象初始化为 DTO 类时,我得到了ClassCastException

【问题讨论】:

  • DataDTO类的代码也贴出来。
  • @SudhirOjha 它是一个简单的 pojo 类 public class DataDTO{ String TAG;字符串备注; Getter 和 Setter }

标签: java json ajax rest classcastexception


【解决方案1】:

您的DataDTO 类应该如下所示,因为在AJAX 中您使用的是TAGREMARKS。但是在DataDTO 类中是TAGRemarks。所以改变你的班级如下:

public class DataDTO {
    private String TAG;
    private String REMARKS;
    //Getters and setters
}

【讨论】:

  • 我已经考虑过案例,但我仍然收到此错误。我实际上是在 json 对象中使用下面的代码添加一行。 $scope.data.unshift( {TAG:'选择标签', REMARKS:'输入新备注'});但是当我在控制台日志中打印数据时,我又得到了一个键 [{"TAG":"Taxes","REMARKS":"Enter Remarks",,"$$hashKey":"object:280"}] 以便在我的 DTO 类中处理它 我又创建了一个条目 private String $$hashKey;使用 getter 和 setter
  • @RishiBeohar 从DataDTO 类中删除$$hashKey,它是由angularjs 添加的。在您的 ajax 调用中使用 angular.toJson(); 而不是 JSON.stringify()
  • 仍然收到此错误“请求处理失败;嵌套异常是 java.lang.ClassCastException: java.util.LinkedHashMap 无法转换为”
  • 还有其他方法可以读取控制器中的 JSON 对象列表吗?如果我可以分别读取每个 json 对象,那将非常有帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-09-30
  • 1970-01-01
  • 2020-02-26
  • 1970-01-01
  • 2013-01-29
  • 2018-09-25
  • 1970-01-01
相关资源
最近更新 更多