关闭

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

标签: spring mvc
411人阅读 评论(0) 收藏 举报
分类:
现有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传过来的属性可能很多且未知属性名,我只想取其中需要的部分


解决方法:

SpringMVC默认使用的是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));
    }
}
0
0
查看评论

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

现有bean类User class User { long id; String name; } 从前端投递过来json数据 json: {"id":1, "name": "steven", "age"...
  • z69183787
  • z69183787
  • 2016-08-24 17:21
  • 1293

springMVC接收前端json数据的总结

对于json对象类型(即JsonObject)的数据,springMVC主要有以下几种方式接收: 1.通过Map接收@RequestMapping(value = "/getAllStudio" ) public void getAllStudio(@RequestBo...
  • wangpei555
  • wangpei555
  • 2017-06-03 22:21
  • 1331

Spring-MVC + Json遇到的无法返回前端的坑

由于做项目使用Spring-MVC架构,而Json格式的数据又是返回前端时经常用到的,越是常见的东西往往莫名其妙的出错,后端是这样写的: @RequestMapping(value ="/application/applicationPublish", method = Req...
  • yangqunyangqun
  • yangqunyangqun
  • 2017-06-28 18:30
  • 287

SpringMVC接受JSON参数详解及常见错误总结

SpringMVC接受JSON参数详解及常见错误总结 最近一段时间不想使用Session了,想感受一下Token这样比较安全,稳健的方式,顺便写一个统一的接口给浏览器还有APP。所以把一个练手项目的前台全部改成Ajax了,跳转再使用SpringMVC控制转发。对于传输JSON数据这边有了更深的一...
  • LostSh
  • LostSh
  • 2017-03-31 12:57
  • 14111

spring mvc 接收返回json串

1.有一问题不明,return  时必须进行 tojson()方法调用。 2.GET 请求是不能待request body 的。POST 请求可以。
  • shaokai132333
  • shaokai132333
  • 2015-10-30 00:44
  • 2268

RequestBody注解--springMVC接收json串

JSON字符串是目前前后端通信的主流方案,本文粗略记录,前端ajax怎么给服务端传json格式字符串, 以及java服务端springMVC如何接收请求字符串。 1. 前端ajax代码: $.ajax({ type : 'POST', cache : false, url ...
  • wwHRestarting
  • wwHRestarting
  • 2016-10-14 13:43
  • 4056

springMvc 前端用json的方式向后台传递对象数组

JSP var vipFee= new Array; //遍历选中的对象$("#feeList :checkbox:checked").each(function(i){ vipFee.push({"enterpriseSeq":$(this).att...
  • m0_37294838
  • m0_37294838
  • 2017-03-02 13:09
  • 3137

SpringMVC 接收页面Post提交的json字符串并解析

json 使用的是ali的fastjson; 页面提交的是json字符串,后台使用@RequestBody String param接收数据,通过json解析param; 页面: <%@ page language="java" contentType=&qu...
  • liangwenmail
  • liangwenmail
  • 2016-08-15 21:47
  • 16316

springMvc直接接收json数据自动转化为Map<String,String>

springMvc直接接收json数据自动转化为Map ,必须加上@RequestBody注解并且前台ajax发送请求的时候需要对数据进行格式化 $.ajax({ type : "POST", url : "/...
  • u011035407
  • u011035407
  • 2017-05-05 18:44
  • 2918

SpringMVC接受复杂json数据类型

public Result imgsAdd(@RequestBody List imgs) throws ImgException { Result result = new Result(); if(imgService.insertByBatch(imgs) > 0) { /...
  • qq383264679
  • qq383264679
  • 2016-04-08 15:28
  • 1505
    个人资料
    • 访问:1633396次
    • 积分:18303
    • 等级:
    • 排名:第614名
    • 原创:155篇
    • 转载:913篇
    • 译文:34篇
    • 评论:222条
    文章分类
    最新评论