Jackson中的JSON属性文件不区分大小写[重复]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Jackson中的JSON属性文件不区分大小写[重复]相关的知识,希望对你有一定的参考价值。

这个问题在这里已有答案:

我有一个JSON属性文件,由用户手动更新。

我使用Jackson Object映射器将其映射到对象:

[ 
   {  "id":"01",
      "name":"Joe",
      "Children" : [ {"Name" : "Alex",
                       "Age" : "21"},
                     {"name" : "David",
                      "Age" : "1"}
                   ]
    },
    {  "id":"02",
       "name":"Jackson",
       "Children" : [ {"Name" : "Mercy",
                       "Age" : "10"},
                      {"name" : "Mary",
                       "Age" : "21"}
                    ]
    }
]

由于它是由用户手动更新的,因此可以使用任何外壳;混合,上层,下层等我找到的解决方案是,在读取文件时我将转换为小写,如下所示:

 String content = new Scanner(new File("filename")).useDelimiter("\Z").next();

在此之后,我使用杰克逊映射到我的对象,这是有效的。我使用小写成员名称作为映射类。这是正确的方法还是有其他方法吗?

答案

您可以使用

ObjectMapper mapper = new ObjectMapper();
mapper.configure(MapperFeature.ACCEPT_CASE_INSENSITIVE_PROPERTIES, true);

此功能在Jackson版本2.5.0之后。

另一答案

您可以使用自定义PropertyNamingStrategy http://fasterxml.github.io/jackson-databind/javadoc/2.1.0/com/fasterxml/jackson/databind/PropertyNamingStrategy.html

只需创建一个并配置。

PropertyNamingStrategy strategy = // ... init
ObjectMapper mapper = new ObjectMapper();
mapper.setPropertyNamingStrategy(strategy);

您可以扩展PropertyNamingStrategy类,也可以更好地扩展PropertyNamingStrategyBase,可以更容易。

以上是关于Jackson中的JSON属性文件不区分大小写[重复]的主要内容,如果未能解决你的问题,请参考以下文章

杰克逊数据绑定枚举不区分大小写

如何强制 System.Text.Json.JsonElement.GetProperty 使用不区分大小写的方法搜索属性?

如何使用 Jackson 和 MongoDB 传递 JSON 消息中的属性?

C#反序化json字符串,不用区分大小写

js json转xml(可自定义属性,区分大小写)

如果 POJO 扩展了 Spring Jackson 中的抽象类,如何忽略它的大小写?