如果您想了解SpringMVC@RequestBody问题:Unrecognizedfield,notmarkedasignorable的相关知识,那么本文是一篇不可错过的文章,我们将对springm
如果您想了解SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable的相关知识,那么本文是一篇不可错过的文章,我们将对springmvc nosuchmethoderror进行全面详尽的解释,并且为您提供关于Ajax+SpringMVC requestBody、com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 异常、CVPR2015_Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable I...、debug:The key "" is not recognized and ignored.的有价值的信息。
本文目录一览:- SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable(springmvc nosuchmethoderror)
- Ajax+SpringMVC requestBody
- com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 异常
- CVPR2015_Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable I...
- debug:The key "" is not recognized and ignored.
SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable(springmvc nosuchmethoderror)
在使用Json传值并且使用@RequestBody注解的时候需要注意一些问题:
- 一个方法中只能有一个@RequestBody注解。
- 默认情况下@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" })
指定的字段不会被序列化和反序列化。
Ajax+SpringMVC requestBody
ajax+Spring MVC
经验证,上文写的是比较正确的,所以转过来保存一下.
传JSON对象
前端
function test () { var param = {username : "yitop"}; $.ajax({ timeout : 20000,type : "POST",dataType : "JSON",url : "/user/userRole.htm",data : param,success : function(data){ alert(data); } //注意:这里不能加下面这行,否则数据会传不到后台 //contentType:'application/json;charset=UTF-8', }); }
后端
Controller: @RequestMapping(value = "userRole",method = RequestMethod.POST) @ResponseBody public List<Role> selectRoles(String username) throws WebTransException { /* 逻辑代码 */ }
传JSON字符串+@RequestBody接收
前端
function icheckDelete(url){ var parms = { list : array //这是个数组 }; $.ajax({ dataType: "JSON",contentType:'application/json;charset=UTF-8',//关键是要加上这行 Traditional:true,//这使json格式的字符不会被转码 data: JSON.stringify(parms),type: "DELETE",timeout: 20000,url: url,success : function () { alert("删除成功!"); },error : function (data){ alert(data.responseText); } }); }
后端
Controller: @RequestMapping(value = "deleteList",method = RequestMethod.DELETE) @ResponseBody public String delete(@RequestBody DeleteListRequest request) throws WebTransException{ /* 逻辑代码 */ return "success"; }
DeleteListRequest: /** * @author fengzp * @date 16/12/15下午6:08 * @email fengzp@gzyitop.com * @company 广州易站通计算机科技有限公司 */ public class DeleteListRequest { List<Map<String,String>> list = new ArrayList<>(); public DeleteListRequest() { } public List<Map<String,String>> getList() { return list; } public void setList(List<Map<String,String>> list) { this.list = list; } }
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. jar包
我的maven pom.xml如下所示:
<jackson-2-version>2.4.2</jackson-2-version>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<exclusions>
<exclusion>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
</exclusion>
</exclusions>
<version>${jackson-2-version}</version>
</dependency>
下面还原一下问题的场景。
1.1.3. bean实体
需要将json转化的实体对象User类如下:
public class User {
private long id;
private String name;
private boolean flag;
public long getId() {
return id;
}
public void setId(long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
@Override
public String toString() {
return "User [id=" + id + ", name=" + name + ", flag=" + flag + "]";
}
}
1.1.4. 测试
具体的测试程序如下所示:
String s = "{\"id\":1,\"name\":\"test\",\"age\":19}";
ObjectMapper mapper = new ObjectMapper();
User value = mapper.readValue(s, User.class);
System.out.println(value);
因为user类中的属性有id、name、flag,而对应的s字符串中有age字段所以不匹配,报错信息如下:
Exception in thread "main" com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field "age" (class com.daling.bpmn.test.User), not marked as ignorable (3 known properties: "id", "name", "flag"])
at [Source: {"id":1,"name":"test","age":19}; line: 1, column: 31] (through reference chain: com.daling.bpmn.test.User["age"])
at com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException.from(UnrecognizedPropertyException.java:51)
at com.fasterxml.jackson.databind.DeserializationContext.reportUnknownProperty(DeserializationContext.java:731)
at com.fasterxml.jackson.databind.deser.std.StdDeserializer.handleUnknownProperty(StdDeserializer.java:915)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownProperty(BeanDeserializerBase.java:1298)
at com.fasterxml.jackson.databind.deser.BeanDeserializerBase.handleUnknownVanilla(BeanDeserializerBase.java:1276)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.vanillaDeserialize(BeanDeserializer.java:243)
at com.fasterxml.jackson.databind.deser.BeanDeserializer.deserialize(BeanDeserializer.java:118)
at com.fasterxml.jackson.databind.ObjectMapper._readMapAndClose(ObjectMapper.java:3051)
at com.fasterxml.jackson.databind.ObjectMapper.readValue(ObjectMapper.java:2146)
at com.daling.vrm.controller.product.NewShelvesController.main(NewShelvesController.java:71)
1.1.5. 最终解决方案
1.1.5.1. 第一种解决方案
ObjectMapper 对象添加
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
String s = "{\"id\":1,\"name\":\"test\",\"age\":19}";
ObjectMapper mapper = new ObjectMapper();
mapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false);
User value = mapper.readValue(s, User.class);
System.out.println(value);
1.1.5.2. 第二种解决方案
在需要转化的对象的类中添加注解,注解信息如下:
@JsonIgnoreProperties(ignoreUnknown = true)
public class User
...
分享牛,分享、我们是快乐的。
CVPR2015_Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable I...
Author
一作: Anh Nguyen Wyoming大学 二作: Jason Yosinski Cornell大学 三作:Jeff Clune Wyoming 三个作者都是好基友,好多工作都是一起做的,做了挺多可视化方面的工作 主攻understanding & improving neural networks and generative
Abstract
问题来了,计算机和人类视觉有什么不同? Intriguing这篇论文揭示了对人眼不可察觉的改变一张图会导致DNN把它完全分错。我们发现可以产生人类完全识别不同的图片,但是DNN可以正确分类
我们的论文结果主要突出人类视觉和当前DNN的有趣不同,同时关于DNN计算机视觉 generality 提出问题
对比与Intriguing, 这篇论文从另一个方便揭示了DNN和人类视觉的不同。
Introduction
Generating images with evolution
用来测试的新的图片由evolutinary algorithm(EA)算法产生。
这篇工作,主要是做了对Intriguing这篇论文的补充: 不只是对图像细微变化使致DNN分类错误,而且根据DNN很容易产生人眼看毫无意义,但是DNN却能用高置信度分类,这是对DNN以及人类视觉 generality的思考
看别的想法说,在分类空间中有一部分高置信度的空间为人眼不可识别的图像。
面对人类完全无法识别的样本(Fooling Examples), 深度学习模型会以高置信度将它们分类,例如将噪声识别为狮子。这意味着模型很容易被愚弄,例如垃圾 邮件发送者可以利用对抗样本来骗过垃圾邮件识别系统,人脸支付也面临着巨大的挑战。当然,只要不公开这些系统,骗子也就无法针对它进行大规模制造对抗样本。然而,可怕的是,在不同训练子集上用不同架构学习的不同的模型,居然能被同一套对抗样本愚弄!这意味着骗子可以自己训练出一个模型,并在此模型上找到一组对抗样本后就能愚弄其他的模型。
debug:The key "" is not recognized and ignored.
今天写代码时候发现chrome浏览器有一个警告The key "" is not recognized and ignored.既然发现了就处理一下吧,于是就有了这篇小文章。
查阅了一下资料:
答案有了,
原来是meta有多余空格(标绿处),去掉后warn消失。
今天的关于SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable和springmvc nosuchmethoderror的分享已经结束,谢谢您的关注,如果想了解更多关于Ajax+SpringMVC requestBody、com.fasterxml.jackson.databind.exc.UnrecognizedPropertyException: Unrecognized field 异常、CVPR2015_Deep Neural Networks are Easily Fooled: High Confidence Predictions for Unrecognizable I...、debug:The key "" is not recognized and ignored.的相关知识,请在本站进行查询。
本文标签: