当前位置: 首页 > 知识库问答 >
问题:

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

相高谊
2023-03-14

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

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

[ 
   {  "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();

在这之后,我使用Jackson映射到我的对象,这很有效。我对映射类使用小写成员名称。这是正确的方法还是有其他方法?

共有2个答案

蔡鹏程
2023-03-14

您可以使用自定义属性命名策略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。

文德曜
2023-03-14

你可以用

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

此功能在Jackson版本2.5.0以后。

 类似资料:
  • 问题内容: 如何反序列化包含不区分大小写的枚举值的JSON字符串?(使用Jackson Databind) JSON字符串: 和我的Java POJO: 在这种情况下,使用JSON反序列化将在可行的地方失败。但出于命名约定的原因,我也想工作。 序列化POJO也会导致大写 我想到了使用@JsonGetter: 而且有效。但是我想知道是否有更好的解决方案,因为这对我来说似乎是hack。 我也可以编写一

  • 问题内容: 我已经观察到某些CSS属性(例如带引号声明的属性)可能区分大小写,而其他属性则不区分大小写……但是 ,网络浏览器和“ HTML渲染器”必须如何解释? 在任何CSS上下文(XML,SVG等)和所有其他应用程序中都一样吗? 标准怎么说? 示例: Adobe InDesign 导出了和。我可以“规范化为小写”(例如合并类似的类)吗? 问题答案: (更新@ÁlvaroG.Vicario的答案和

  • 问题内容: 我正在尝试提出一个要求区分大小写的结果的请求。 例如在我的数据库中 该请求是 但我有3行作为结果,我只想要abcdef 我试图找到一个解决方案 但是我有这个错误: 未知归类:’Latin1_General_CS_AS’{“成功”:false,“错误”:“#1273-未知归类:’Latin1_General_CS_AS’”} 谢谢 问题答案: 感谢您的帮助,我找到了不是latin1 ut

  • 问题内容: 我有一个Lucene索引,该索引当前区分大小写。我想添加的 选项 有不区分大小写作为后备的。这意味着与案例匹配的结果将获得更大的权重,并且将首先出现。例如,如果结果数限制为10,并且有10个匹配项符合我的情况,那就足够了。如果仅找到7个结果,则可以从不区分大小写的搜索中再添加3个结果。 我的案子实际上更复杂,因为我有不同重量的物品。理想情况下,匹配“错误”的表壳会增加一些重量。不用说,

  • 如何在Java中以区分大小写的方式进行匹配?我的意思是,我想编写一个类似的regex。但是我想匹配以及等等。在Java中最简单的方法是什么?