我要回答我自己的问题。首先要特别感谢Sotirios Delimanolis,因为他给了我钥匙以调查发生了什么。
如您所知,我从视图创建以下json:
{"manager":{"username":"admin","password":"admin"},"userToSubscribe":{"username":"newuser","password":"newpassword","email":"user@1and1.es"},"openid":"https://myopenid..."}我做了一点修改,因为我意识到创建对象订阅和var订阅不是必需的。如果您像这样构建JSON,它将可以完美地工作:
var manager = { username: "admin", password: "admin"};var userToSubscribe = { username: "newuser", password: "newpassword", email: "user@1and1.es"};var openid = "https://myopenid...";$.ajax({ url: '/dp/rest/isUserSuscribed.json', type: 'POST', dataType: 'json', contentType: 'application/json', mimeType: 'application/json', data: JSON.stringify({manager : manager, userToSubscribe : userToSubscribe, openid : openid}) });控制器收到以下json:
@RequestMapping(method=RequestMethod.POST, value="/isUserSuscribed.json")public @ResponseBody ResponseMessageElement<Boolean> isUserSuscribed(@RequestBody SubscriptionWrapper subscription){还有SubscriptionWrapper …
private static class SubscriptionWrapper { BasicUser manager; BasicUser userToSubscribe; String openid; public BasicUser getManager() { return manager; } public void setManager(BasicUser manager) { this.manager = manager; } public BasicUser getUserToSubscribe() { return userToSubscribe; } public void setUserToSubscribe(BasicUser userToSubscribe) { this.userToSubscribe = userToSubscribe; } public String getOpenid() { return openid; } public void setOpenid(String openid) { this.openid = openid; }}那是什么问题 我收到了一个不正确的Request
400错误…我按照Sotirios的建议调试了MappingJackson2HttpMessageConverter,但发生了异常(没有合适的构造函数)。无论此类不是静态的,Jackson
Mapping都无法构建内部类。将SubscriptionWrapper设置为静态是解决我的问题的方法。
您还可以检查以下答案:
http://stackoverflow.com/questions/8526333/jackson-error-no-suitable-constructor
http://stackoverflow.com/questions/12139380/how-to-convert-json-into-pojo-in-java-using-jackson
如果您有反序列化的问题,请检查以下内容:
http://stackoverflow.com/questions/17400850/is-jackson-really-unable-to-deserialize-json-into-a-generic-type
感谢所有的答复。



