對象包裝我創建JSON如下:Spring MVC的@RequestBody收到非原始屬性
var manager = {
username: "admin",
password: "admin"
};
var userToSubscribe = {
username: "newuser",
password: "newpassword",
email: "[email protected]"
};
var openid = "myopenid";
var subscription = {
manager: manager,
userToSubscribe : userToSubscribe,
openid : openid
};
$.ajax({
url: '/myapp/rest/subscribeUser.json',
type: 'POST',
dataType: 'json',
contentType: 'application/json',
mimeType: 'application/json',
data: JSON.stringify({subscription : subscription})
});
這是發送的JSON:
{"subscription":{"manager":{"username":"admin","password":"admin"},"userToSubscribe":{"username":"newuser","password":"newpassword","email":"[email protected]"},"openid":"myopenid"}}
,我想將這個JSON映射到一個Wrapper類。這是包裝:
private class Subscription{
private User manager;
private User userToSubscribe;
private String openid;
public User getManager() {
return manager;
}
public void setManager(User manager) {
this.manager = manager;
}
public User getUserToSubscribe() {
return userToSubscribe;
}
public void setUserToSubscribe(User userToSubscribe) {
this.userToSubscribe = userToSubscribe;
}
public String getOpenid() {
return openid;
}
public void setOpenid(String openid) {
this.openid = openid;
}
}
傑克遜依賴性在pom.xml(我使用彈簧3.1.0.RELEASE):
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-asl</artifactId>
<version>1.9.10</version>
</dependency>
在休息-servlet.xml中的映射
<bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter">
<property name="messageConverters">
<list>
<ref bean="jsonConverter" />
</list>
</property>
</bean>
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
</bean>
而控制器方法的報頭:
public @ResponseBody SimpleMessage subscribeUser(@RequestBody Subscription subscription)
作爲POST的結果,我收到400錯誤的請求錯誤。是否有可能這樣做,或者我需要使用@RequestBody
字符串還是@RequestBody Map<String,Object>
來完成,並自己解碼JSON?
謝謝!
應該沒有什麼阻止你這樣做。錯誤400表示請求或映射有問題。 'User'類是否有默認的無參數構造函數。 –
這個包裝器在Java中是一個絕對不同的概念,你有幾個想要在外部類中聚合的對象。 – 2013-10-31 11:12:38
你使用的是什麼版本的彈簧? –