www.91084.com

GVKun编程网logo

SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable(springmvc nosuchmethoderror)

15

如果您想了解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)

SpringMVC @RequestBody问题:Unrecognized field , not marked as ignorable(springmvc nosuchmethoderror)

在使用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" })

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

Ajax+SpringMVC requestBody

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 异常

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类中的属性有idnameflag,而对应的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...

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

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 ignorablespringmvc 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.的相关知识,请在本站进行查询。

本文标签: