Jackson 反序列化时实现大小写不敏感设置

常用配置

ObjectMapper objectMapper = new ObjectMapper();
objectMapper.configure(Feature.IGNORE_UNKNOWN,true);
objectMapper.configure(Feature.WRITE_BIGDECIMAL_AS_PLAIN,true);
objectMapper.configure(JsonParser.Feature.ALLOW_MISSING_VALUES,true);
objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES,false);
objectMapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES,false);//大小写脱敏 默认为false  需要改为tru

参考

com.fasterxml.jackson.databind.MapperFeature#ACCEPT_CASE_INSENSITIVE_PROPERTIES

使用注解方式:举例

public static void main(String[] args) throws IOException {
        String x = "{\n"
            + "        \"TToUserName\":\"gh_a5624dd2db4e\",\n"
            + "        \"FFromUserName\":\"ochvq0Kn35VlnTAcIJ3fRBAZTQUY\""
            + "       }";

        ObjectMapper objectMapper = new ObjectMapper();
        Result map = objectMapper.readValue(x, Result.class);
        System.out.println(map);
        objectMapper.writeValue(System.out,map);
    }

    private static class Result {
        private String ToUserName;
        private String FromUserName;
        @JsonProperty("ToUserName")
        public String getToUserName() {
            return ToUserName;
        }

        @JsonProperty("TToUserName")
        public void setToUserName(String toUserName) {
            ToUserName = toUserName;
        }

        @JsonProperty("FromUserName")
        public String getFromUserName() {
            return FromUserName;
        }

        @JsonProperty("FFromUserName")
        public void setFromUserName(String fromUserName) {
            FromUserName = fromUserName;
        }
    }

Jackson 转换大小写问题

Jackson转换json时会把大写转换成小写

解决办法:

1、在变量时加上: @JsonProperty

2、在set/get方法加上:@JsonIgnore

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。

(0)

相关推荐

  • 解决Jackson反序列化map,set等复杂类型问题

    工作中遇到了这个问题,我简单的用代码复现一下,就是一个map,value又为一个set,导致反序列化报错 @Test public void test10() throws Exception { //准备一下数据 Map<String, Set<String>> map = new HashMap<>(); map.put("aaa",new HashSet<String>(){{add("111");add(&qu

  • 如何利用Jackson序列化忽略指定类型的属性详解

    前言 本文准确来讲是探讨如何用 Jackson 来序列化 Apache avro 对象,因为简单用 Jackson 来序列化 Apache avro 对象会报错.原因是序列化 Schema getSchema() 时会报错,后面会讲到,需要序列化时忽略该属性.那么能不能在 getSchema() 上加上 @JsonIgnore 来忽略该属性呢?原理上是通的.不过手工修改的 avsc 生成的 Java 文件随时会因为重新编译而还原,所以不太具有实际可操作性,当然通过定制编译 avsc 用的模板文件

  • 解决json字符串序列化后的顺序问题

    1.应用场景: 如果项目中用到json字符串转为jsonObject的需求,并且,需要保证字符串的顺序转之前和转成jsonObject之后输出的结果完全一致.可能有点绕口,下面举一个应用场景的例子. 在做项目的过程中,需要写Junit单元测试,有一个方法如下: @Test @SuppressWarnings("unchecked") public void facilitySoftwareQueryByPageExample() throws Exception { facilityS

  • jackson序列化和反序列化的应用实践指南

    源码地址:https://github.com/zhouweixin/serializable 1 相关概念 序列化: 把对象转换为字节序列的过程称为对象的序列化 反序列化: 把字节序列恢复为对象的过程称为对象的反序列化 2 序列化的作用 用于把内存中的对象状态保存到一个文件中或者数据库中 用于网络传送对象 用于远程调用传输对象 3 准备序列化对象 准备了两个类, 教师类和学生类, 其中一个学生只有一个教师 这里省略了构造方法和setter, getter方法 Teacher.java publ

  • Jackson序列化和反序列化忽略字段操作

    一.设置Jackson序列化时只包含不为空的字段 new ObjectMapper().setSerializationInclusion(Include.NON_NULL); 二.设置在反序列化时忽略在JSON字符串中存在,而在Java中不存在的属性 new ObjectMapper.disable(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES); 三.Jackson序列化时忽略字段的方式 1.方式一:FilterProvider a)在需

  • Jackson 反序列化时实现大小写不敏感设置

    常用配置 ObjectMapper objectMapper = new ObjectMapper(); objectMapper.configure(Feature.IGNORE_UNKNOWN,true); objectMapper.configure(Feature.WRITE_BIGDECIMAL_AS_PLAIN,true); objectMapper.configure(JsonParser.Feature.ALLOW_MISSING_VALUES,true); objectMapp

  • jackson反序列化时如何忽略不需要的字段

    目录 jackson反序列化忽略字段 解决办法很简单 jackson忽略指定属性 例子 jackson反序列化忽略字段 JSON字符串中含有我们并不需要的字段,那么当对应的实体类中不含有该字段时,会抛出一个异常,告诉你有些字段没有在实体类中找到. 解决办法很简单 在声明ObjectMapper之后,加上上述代码: objectMapper.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false); jackson忽略指

  • 使用Jackson反序列化遇到的问题及解决

    Jackson反序列化遇到的问题 最近在项目中需要使用Jackson把前台转来的字符转为对象,转换过程中发生了错误,报错如下 ​com.fasterxml.jackson.databind.exc.InvalidFormatException: Can not construct instance of java.util.Date from String value '2018-09-14 15:12:08': not a valid representation (error: Failed

  • SQLite字符串比较时的大小写问题解决方法

    大部分数据库在进行字符串比较的时候,对大小写是不敏感的.但是,最近使用SQLite的时候,却发现它的情况恰好相反. 假设表User的结构和值如下:   UserName 1 User1 执行下面的SQL语句: 复制代码 代码如下: SELECT * FROM [User] WHERE UserName = 'user1' 结果是没有找到任何记录.明显地,SQLite在进行字符串比较的时候,默认对大小写是敏感的.这会对应用程序造成不良的影响.比如,用户在输入用户名的时候必须严格按照大小写输入,这是

  • Jackson反序列化@JsonFormat 不生效的解决方案

    今天在线上发现一个问题,在使用Jackson进行时间的反序列化时,配置的 @JsonFormat 没有生效 查看源码发现,Jackson在反序列化时间时,会判断json字段值类型,如下: 由于在我们服务里,前端传时间值到后端时采用了时间戳的方式,json值被判断为数字类型,所以Jackson在反序列化时直接简单粗暴的方式处理,将时间戳转换为Date类型: 为了能够按照正确的格式解析时间,抹去后面的时间点,精确到日,只好自定义一个时间解析器.自定义的时间解析器很好实现,网上已经有很多实例代码,只需

  • 正则表达式i修饰符(大小写不敏感)

    正则表达式i修饰符: i修饰符用来规定正则表达式的匹配是大小写不敏感的. 语法结构: 构造函数方式: new RegExp("regexp","i") 对象直接量方式: /regexp/i 浏览器支持: IE浏览器支持此元字符. 火狐浏览器支持此元字符. 谷歌浏览器支持此元字符. 实例代码: var str="This is an antzone good"; var reg=/this/; console.log(str.match(reg))

  • Android 处理OnItemClickListener时关于焦点颜色的设置问题

    Android 处理OnItemClickListener时关于焦点颜色的设置问题 当我们使用OnItemClickListener来改变Item以使其比较突出时,我们一般采用如下的代码. public void onItemClick(AdapterView<?> parent, View view, int arg2, long arg3) { //恢复每个单元格背景色 TextView categoryTitle; for(int i=0;i<parent.getCount();i

  • JDK反序列化时修改类的全限定性名解析

    应用场景 SpringSecurityOAuth2有一个奇葩的设计,那就是它将与access_token相关的所有属于都封装到OAuth2AccessToken中,然后保存时会直接将该对象序列化成字节写入数据库.我们在资源服务器中想要直接读数据库来取出access_token来验证令牌的有效性,然而又不想引入SpringSecurity的相关依赖污染jar包.这时可以将SpringSecurity中OAuth2AccessToken的唯一实现类DefaultOAuth2AccessToken的源

  • postman中POST请求时参数包含参数list设置方式

    如下所示: 图中params包含多个参数,具体如下: {"rzrq":"2019-01-21","rzlx":"1","nr":"","jsonStr":"[{'gzlx':'1','gznr':'11','gzcg':'11','czwt':'11','yjjy':'11','rzgl_id':'','px':1},{'gzlx':'1','gznr':'

随机推荐