2017-01-16 69 views
1

大家好:我有一个端点在Spring MVC的配置是这样的Spring MVC的使用jQuery POST调用

@RequestMapping("/path/to/endpoint") 
    public void pathToEndPoint(@RequestBody String body){ 
     //do stuff with body 
    } 

,然后在我的HTML我这样做:

var data ; //a json object 
$.post("/path/to/endpoint", data); 

问题当Spring发现请求体实际上是一个json对象时,它似乎想要将这些对象属性映射到一个java类,并且当它看到我给它一个字符串作为参数时,它不知道如何映射它。

换句话说,春天似乎试图太聪明,我其实只是想要我的请求身体的字符串表示;换句话说,我想要的是json而不是pojo,因为它的格式是我要求的。

我如何得到春天停止试图有帮助,只是把原始请求的身体放入一个字符串为我?

感谢您提供任何帮助。

更新似乎春天

读取缓冲读者果然看来我的Ajax调用不发送任何数据或数据属性不映射到请求主体是空的。真的紧抓住这一切。

回答

0

尝试使用JSON.stringify(数据)

var data ; //a json object 
$.post("/path/to/endpoint", JSON.stringify(data)); 

而且

如果你把“身体”内部变量将字符串值,使之类,你可以使用这样的代码;

YourClass dataFromBody = (new System.Web.Script.Serialization.JavaScriptSerializer()) 
         .Dese‌​rialize<YourClass>(b‌​ody); 
+0

做到这一点,但仍然是相同的错误。 – user1383163

+0

如果你在“body”变量中取得字符串化的值,为了使它成为一个类,你可以使用这样的代码; __YourClass dataFromBody =(new System.Web.Script.Serialization.JavaScriptSerializer())。反序列化(body); __ –

+1

请做出这个答案,所以我可以接受 – user1383163