Jquery 将Ajax POST发送的JSON对象映射到Spring MVC模型

Jquery 将Ajax POST发送的JSON对象映射到Spring MVC模型,jquery,json,ajax,spring,Jquery,Json,Ajax,Spring,您好,朋友们,我正在处理这个问题,从2天,并没有能够解决。我希望stackoverflow能帮助我 问题:我通过ajax发送了JSON对象,在后端我有一个类(名为:SalesCommandObject),其中包含其他模型的对象、这些模型的getter和setter。 然后尝试将类型为“SalesCommandObject”的JSON对象发送到控制器方法。这样json数据就可以映射到模型数据中 但服务器抛出错误:“400错误请求:客户端发送的请求在语法上不正确” 我发布了整个代码。请检查并帮助我

您好,朋友们,我正在处理这个问题,从2天,并没有能够解决。我希望stackoverflow能帮助我

问题:我通过ajax发送了JSON对象,在后端我有一个类(名为:SalesCommandObject),其中包含其他模型的对象、这些模型的getter和setter。 然后尝试将类型为“SalesCommandObject”的JSON对象发送到控制器方法。这样json数据就可以映射到模型数据中

但服务器抛出错误:“400错误请求:客户端发送的请求在语法上不正确”

我发布了整个代码。请检查并帮助我

//Ajax POST的代码:

  var salesCommandObject = {};
        salesCommandObject.CustomerInfo =
                {
                "address1": "Address_1",
                "city": "City",
                "pin": "PIN"
                };
        salesCommandObject.SalesModel = 
                {
                "locality":'Loc1',
                "shippingType":'Regular',
                "shippingCost":20
                };

               $.ajax
               ({
                  type: "POST",
                  dataType : 'json',
                  async : true,     
                  url: "http://localhost:8080/OnlineStore/kmsg/grocery/SaveSalesOrder",
                  data : JSON.stringify(salesCommandObject),
                  contentType: "application/json; charset=utf-8"
                  }).done(function(data,type,xml)
                            {
                              alert("result");
                              console.log(data);
                            }).fail(function()
                                      {
                                alert("Something Bad Happened, Service failed");
                          })
//接收JSON对象的控制器代码:

@RequestMapping(value = "/SaveSalesOrder", method = RequestMethod.POST, consumes=MediaType.APPLICATION_JSON_VALUE)  
    public @ResponseBody String SaveCustomerOrder(@RequestBody SalesCommandObject salesCommandObject) throws Exception 
    {       
        CustomerModel cust = salesCommandObject.getCustomerInfo();
        SalesModel sale = salesCommandObject.getLocality();
        System.out.println(cust.getAddress1());
        System.out.println(sale.getLocality());
        return "Success";
    }
//类模型salesCommandObject的代码

public class SalesCommandObject 
{
   private CustomerModel            CustomerInfo = new CustomerModel();
   private List<SalesItemsModel>    salesData ;
   private SalesModel               salesModel = new SalesModel();
   private SalesDeliverySlotsModel  salesDelSlotsModel = new SalesDeliverySlotsModel();
   private List<ItemsForSaleModel>  itemsforSale ;


      // getters and setters here//
}
公共类SalesCommandObject
{
private CustomerModel CustomerInfo=新CustomerModel();
私有列表数据;
private SalesModel SalesModel=新SalesModel();
private SalesDeliverySlotsModel salesDelSlotsModel=新的SalesDeliverySlotsModel();
私人物品清单;
//这里有接球手和接球手//
}

朋友们,我已经解决了这个问题:

我还没有在模型中声明默认构造函数,这就是为什么我通过ajax发送的数据类型与接收端的控制器参数中的数据类型不匹配。此外,pom.xml中的jackson版本设置不正确。 必须记住的几件事是: Json对象的键值必须与set方法名匹配: 例如,如果:
Json数据是{“key1”:“value”,“keyTwo”:“value123”}
那么二传手:

setKey1(){} setKeyTwo(){}

此外,在所有使用的模型类中都必须有公共默认构造函数,我们将在其中映射json数据


谢谢。

数据如何
“Location”:'Loc1'
它被映射了吗?是的,我的朋友单引号或双引号不会太麻烦json,两者都将被视为字符串数据如果数据是变量,那么你不必给出任何引号。你能发布你的模型类详细信息吗。
CustomerInfo
SalesModel