SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable

在使用Json传值并且使用@RequestBody注解的时候需要注意一些问题:

  1. 一个方法中只能有一个@RequestBody注解。
  2. 默认情况下@RequestBody标注的对象必须包含前台传来的所有字段。

第一条容易理解,因为RequestBody就是request的inputStream,这个流在第一次使用该注解后会关闭,后面的都会报错(stream closed)。

第二条如果没有包含前台传来的字段,就会报错:Unrecognized field xxx , not marked as ignorable,这是因为MappingJacksonHttpMessageConverter默认要求必须存在相应的字段。如果没有前台传来的某个字段,就会报错。。

解决方法有很多,可以增加一个字段来接收前台传来的这个值,如果存在多个字段,这种方式很不好(就算一个字段,如果没用,新增字段也不好)。

或者在前台往后台传值的时候,去掉无用的字段。这样还能减少网络传输的大小。

还有一些方法,这些方法主要是使用Jackson提供的json注解。

@JsonIgnore注解用来忽略某些字段,可以用在Field或者Getter方法上,用在Setter方法时,和Filed效果一样。这个注解只能用在POJO存在的字段要忽略的情况,不能满足现在需要的情况。

@JsonIgnoreProperties(ignoreUnknown = true),将这个注解写在类上之后,就会忽略类中不存在的字段,可以满足当前的需要。这个注解还可以指定要忽略的字段。使用方法如下:

@JsonIgnoreProperties({ "internalId", "secretKey" })

指定的字段不会被序列化和反序列化。

原文: http://blog.csdn.net/isea533/article/details/33397735

时间: 2024-10-10 10:52:16

SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable的相关文章

org.codehaus.jackson.map.exc.UnrecognizedPropertyException: Unrecognized field "phoneNo" ...not marked as ignorable at

2015-04-29 11:02:12.133 [http-8090-9] WARN org.jasig.cas.client.util.CommonUtils.safeGetParameter[CommonUtils:264] - safeGetParameter called on a POST HttpServletRequest for LogoutRequest. Cannot complete check safely. Reverting to standard behavior

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ExceptionId"

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "ExceptionId" (class com.tongyan.ems.model.request.SynchronizedBean), not marked as ignorable (2 known properties: "cityIds", "exceptionId"]

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "FileSize"

请求阿里云的OSS接口图片信息,返回json格式的数据,通过ObjectMapper将json转为Image对象时候报错转换失败 将json转对象的代码: String jsonStr = "{\n" + " \"FileSize\": {\"value\": \"25929\"},\n" + " \"Format\": {\"value\": \"

16. nested exception is com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "auditUnitName"

org.springframework.web.servlet.mvc.support.DefaultHandlerExceptionResolver:handleHttpMessageNotReadable:384 -Failed to read HTTP message: org.springframework.http.converter.HttpMessageNotReadableException: Could not read document: Unrecognized field

出现Unrecognized field "state" (class com.jt.manage.pojo.ItemCat)异常

当在pojo中,往往会出现字段无法一一对应时,有可能就会出现创建Unrecognized field "state" (class com.jt.manage.pojo.ItemCat)......... 异常. 解决方案: 在当前字段所属的pojo上添加 @JsonIgnoreProperties(ignoreUnknown=true)  注解即可. 该注解表示 遇到没有与字段一一对应的属性时程序直接忽略往下走.

SpringMVC @RequestBody接收Json对象字符串

转:http://www.cnblogs.com/quanyongan/archive/2013/04/16/3024741.html 以前,一直以为在SpringMVC环境中,@RequestBody接收的是一个Json对象,一直在调试代码都没有成功,后来发现,其实 @RequestBody接收的是一个Json对象的字符串,而不是一个Json对象.然而在ajax请求往往传的都是Json对象,后来发现用 JSON.stringify(data)的方式就能将对象变成字符串.同时ajax请求的时候也

SpringMVC @RequestBody接收Json对象字符串 demo

springmvc 的这个 @RequestBody 用得比较少,今天看了一下,还是很方便. @RequestBody 接收类似 [{name: "test"}, {name: "张三"}] 这样的json字符串. 先看页面: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here<

SpringMVC @RequestBody接收JSON报HTTP 415问题的解决方法

现在做的一个项目是做app服务端的,需要从app接收json的请求数据,服务端框架用的是SpringMVC,所以自然而然的想到直接用@RequestBody来接收json数据, 格式如下: public ResponseProtocolMap login(@RequestBody JSONObject requestJson,HttpServletRequest request) { ResponseProtocolMap responseProtocolMap = null; //中间内容省略

SpringMVC @RequestBody 自动转json Http415错误

项目中想用@RequestBody直接接收json串转成对象 网上查了使用方法,看着非常简单,不过经过测试很快发现页面直接报415错误. <body> <h1>HTTP Status 415 - </h1> <HR size="1" noshade="noshade"> <p> <b>type</b> Status report </p> <p> <b&