【问题标题】:How to convert JSon Object to Java Object?如何将 JSON 对象转换为 Java 对象?
【发布时间】:2023-03-17 12:30:01
【问题描述】:

任何人都可以帮我解决这个问题,我正在尝试将通过 ajax 发送的复杂 json 对象转换为对象。这样我就可以使用这个对象传递到我的模型中。

JSP 代码为:

function callRemovefilter()
{
    var jsonObjects = {
        address1: "Address_1",
        city: "City",
        pin: "PIN"
        };
    var jsonObjects2 = {
        locality:"Loc1",
        shippingType:"Regular",
        shippingCost:20
    };

    var cust= JSON.stringify(jsonObjects);
    var sales=JSON.stringify(jsonObjects2);
    jQuery.ajax({
              url: "http://localhost:8080/OnlineStore/kmsg/grocery/SaveSalesOrder",
              type: "GET",
              data: {CustomerInfo:cust,SalesModel:sales},
              dataType: "json",
              beforeSend: function(x) {
                if (x && x.overrideMimeType) {
                  x.overrideMimeType("application/j-son;charset=UTF-8");
                }
              },
              success: function(result) {
             //Write your code here
              }
    });
}

//控制器代码为

  @RequestMapping(value = "/SaveSalesOrder", method = RequestMethod.GET)
            @ResponseStatus(value=HttpStatus.OK)
            public @ResponseBody String SaveCustomerOrder(@RequestParam Map<String,String> requestParams) throws Exception 
            {       
                ObjectMapper objectMapper = new ObjectMapper();
                SalesCommandObject salesCommandObject= new SalesCommandObject();
                salesCommandObject = objectMapper.readValue(body, SalesCommandObject .class);


                return "Success";
            }

//向控制器发送对象的JSP代码

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),
              }).done(function(data,type,xml)
                        {
                                                  console.log(data);
                        }).fail(function()
                                  {
                            alert("Something Bad Happened, Service failed");
                      })

【问题讨论】:

标签: java json spring


【解决方案1】:

发送对象,而不是 jsonstrigs。在您的方法 SaveCustomerOrder 的控制器中获取一个对象,而不是 Map,例如:

@RequestMapping(value = "/SaveSalesOrder", method = RequestMethod.GET) @ResponseStatus(value=HttpStatus.OK) public @ResponseBody String SaveCustomerOrder(@RequestParam CustomerInfo ci, @RequestParam SalesModel sm) throws Exception {
//your logic here return "Success"; }
并将 getter 和 setter 添加到适当的类(即 CustomerInfo、SalesModel),例如:

`public class SalesModel{
    private String sale_id;//or whatever field or property you need
    public String getSale_Id() {
        return sale_id;
    }
    public void setSale_Id(String si) {
        this.sale_id = si;
    }

}`

【讨论】:

  • 你说要发送 Json 对象而不是字符串?有什么问题吗,我发送json数据的方式。我没有发送 json 对象吗,如果没有,那怎么办?同样,当我尝试使用我的模型对象作为我的控制器方法的参数时,萤火虫引发的错误是不受支持的媒体类型,
  • 发送javascript对象!如果您正确设置了 getter 和 setter,它应该可以工作
  • 拜托,关于异常的更多信息
  • 我是 jquery 的新手,你能告诉我正确发送对象的示例吗?
  • var saveData = {}; saveData.one = "测试"; saveData.two = "tes2"; $.ajax({ type: "POST", url: "MyService.aspx/GetDate", data: JSON.stringify(saveData), // 注意在这里更改 contentType: "application/json; charset=utf-8", dataType : "json", 成功: 函数(msg) { alert(msg.d); }, 错误: function(msg) { alert('error'); } });
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-29
  • 2012-05-29
相关资源
最近更新 更多