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" })

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

时间: 2024-10-25 03:51:09

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

com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 异常

分享牛原创(尊重原创 转载对的时候第一行请注明,转载出处来自分享牛http://blog.csdn.net/qq_30739519) 1.1.1. 前言 近期在使用ObjectMapper对象将json转化为对象的时候,出错,解决这个异常之后,打算分享一下,免得别人也遇到类似的问题,具体的出错信息部分如下所示: com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 1.1.2. j

springmvc @requestbody 接收json字符串的原理

问题描述 springmvc @requestbody 接收json字符串的原理 问题如上.贴出代码 @RequestMapping(value = "/sk/api/users", method = RequestMethod.POST) public void entitys(@RequestBody List users, HttpServletRequest request, HttpServletResponse response) { System.out.println(

innobackupex 出现Unrecognized character \x01; marked by <-- HERE after <-- HERE near column 1 at - line 1374.

centos 7.2 mysql 5.7.16 innobackupex version 2.4.6 [root@Devops-mysql-150-115 sh]# innobackupex --defaults-file=/app/mysql/servers/etc/ --user=root --password=xxxxxx /backup/mysql/ 备份出现错误:(有2个提示) 1. Unrecognized character \x01; marked by <-- HERE aft

Oracle Advanced Support系统SQL注入漏洞挖掘经验分享

Oracle Advanced Support系统SQL注入漏洞分析 一年多前我在客户的一个外部环境中执行渗透测试,任何外部环境渗透测试的重要步骤之一就是挖掘出可访问的WEB服务.nmap和EveWitness的结合会令这步骤变得更快,因为我们可以进行端口扫描 并且把这些结果以屏幕截图的形式导入到 EyeWitness中.当梳理完 EyeWitness提供的屏幕截图页面后,我发现了一个Oracle 高级支持服务. 虽然我之前从没听过Oracle Advanced Support,但是当我很快的g

算法题:UVA 10599 Robots(II)(dp lis)

Your company provides robots that can be used to pick up litter from fields after sporting events and concerts. Before robots are assigned to a job, an aerial photograph of the field is marked with a grid. Each location in the grid that contains garb

SQL*Loader FAQ

SQL*Loader FAQ: Contents  [hide]  1 What is SQL*Loader and what is it used for? 2 How does one use the SQL*Loader utility? 3 How does one load MS-Excel data into Oracle? 4 Is there a SQL*Unloader to download data to a flat file? 5 Can one load variab

FindBugs规则整理

FindBugs是基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug,主要检查bytecode中的bug patterns,如NullPoint空指针检查.没有合理关闭资源.字符串相同判断错(==,而不是equals)等 一.Security 关于代码安全性防护 1.Dm: Hardcoded constant database password (DMI_CONSTANT_DB_PASSWORD) 代码中创建DB的密码时采用了写死的密码. 2.Dm

Findbugs异常总汇

FindBugs是基于Bug Patterns概念,查找javabytecode(.class文件)中的潜在bug,主要检查bytecode中的bug patterns,如NullPoint空指针检查.没有合理关闭资源.字符串相同判断错(==,而不是equals)等 一.Security 关于代码安全性防护 1.Dm: Hardcoded constant database password (DMI_CONSTANT_DB_PASSWORD) 代码中创建DB的密码时采用了写死的密码. 2.Dm

openwrt编译 ./scripts/feeds update -a 出错,

问题描述 openwrt编译 ./scripts/feeds update -a 出错, when i running :./scripts/feeds update -a but it is failes like down : mjj@mjj-B85M-HD3-A:~/trunk$ ./scripts/feeds update -a String found where operator expected at /usr/lib/perl/5.18/Cwd.pm line 612, near