开发者社区> 问答> 正文

关于 spring mvc接受前端投递的json 问题

现有bean类User

class User {
    long id;
    String name;
}

从前端投递过来json数据
`
json: {"id":1, "name": "steven", "age":30}
`
后端通过spring mvc接受json数据并转为bean对象

public void create(User user) {
    //todo save
}


此时因为json数据中比bean对象多了一个属性,所以后台spring mvc在处理的时候会报400 bad request错误,有什么办法可以过滤掉前端传过来的多余的属性么?json传过来的属性可能很多且未知属性名,我只想取其中需要的部分

展开
收起
爵霸 2016-03-05 10:52:50 2507 0
1 条回答
写回答
取消 提交回答
  • pringMVC默认使用的是jackson,配置一下就好了:

    objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
    SpringMVC 用的是MappingJackson2HttpMessageConverter这个类。
    可以写一个类继承MappingJackson2HttpMessageConverter,构造方法传入objectMapper对象的时候进行配置
    web.xml 指定自己的类

    <bean  
     class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerMapping">  
    </bean>  
    <bean  
        class="org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter">  
        <property name="messageConverters">  
            <list>  
                <bean  
                    class="MyConvert" />  
            </list>  
        </property>  
    </bean>  

    如果使用的是config的方式进行配置,可以继承WebMvcConfigurerAdapter,重写configureMessageConverters

    @EnableWebMvc
    @Configuration
    public class JSONConfig extends WebMvcConfigurerAdapter{
    
        @Override
        public void configureMessageConverters(List<HttpMessageConverter<?>> converters) {
            ObjectMapper objectMapper = Jackson2ObjectMapperBuilder.json().build();
            objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
            converters.add(new MappingJackson2HttpMessageConverter(objectMapper));
        }
    }
    2019-07-17 18:53:02
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Vue.js 在前端服务化上的探索与实践 立即下载
阿里文娱大前端技术实践 立即下载
前端代码是怎样智能生成的 立即下载