首页 > Spring MVC如何分解json然后绑定参数?

Spring MVC如何分解json然后绑定参数?

客户端以get或者post的形式发来一条json,如下:

{
    'userId': 1, 
    'pager':
        {
            'pageNumber': 2, 
            'pageSize': 20
        }, 
    'lastRefreshTime': 1024
}
    public @ResponseBody String list(@RequestBody int userId,
                @RequestBody Page pager, @RequestBody long lastRefreshTime) {

但是收到400 Bad Request。
如何把这条json分解成多个对象?


如果传过来的参数很奇特,可以按自己的需要写一个org.springframework.web.method.support.HandlerMethodArgumentResolver的实现类。
并将实现类注入进org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter的customArgumentResolvers中。
或者...

<mvc:annotation-driven>
    <mvc:argument-resolvers>
        <bean class="com.kavlez.MyMethodArgumentResolver"/>
    </mvc:argument-resolvers>
</mvc:annotation-driven>

你可以定义个一个Wrapper class.

Class WrapperClass{
    private userId;
    private Pager pager;
    private Date lastRefreshTime;

    ...... //getter and setters
}

在Controller里,

public @ResponseBody String list(@RequestBody WrapperClass wrapperObj) {}

需要注意的是, Jackson-databind 需要在你的classpath中


用@RequestBody Object

【热门文章】
【热门文章】