我正在处理属性名为snake大小写的JSON,但是,我需要将这些属性名转换为较低的camel大小写。
我没有对应于所有对象的bean,所以Jackson通常的ser-de技巧不适用(我认为)。
我试着将它读入Map
并设置一个全局属性命名策略,但没有成功。
String json = "{\"first_name\": \"John\", \"last_name\": \"Doe\" }";
Map<?, ?> myMap = new ObjectMapper().readValue(json, Map.class);
System.out.println(new ObjectMapper()
.setPropertyNamingStrategy(new UpperCamelCaseStrategy())
.writerWithDefaultPrettyPrinter()
.writeValueAsString(myMap));
我并不需要在Jackson身上完成这一点,虽然这是一个简单的问题,但它确实让我很困惑,不知道什么是一种理智的方式来完成这一点。
2条答案
按热度按时间2j4z5cfb1#
我找到了这个解决方案,它有点硬编码,使用regex。但是,这样就不需要使用任何
JsonObject
库。我写了三种方法:
1.一个用于将字符串从snake_case转换为pascalCase
1.另一个处理正则表达式匹配的替换
1.最后一个定义适当的正则表达式,然后调用
replaceMatches
用法如下:
然后,您可以轻松地将字符串转换为JsonObject。
vngu2lb82#
https://github.com/octomix/josson
如果JSON有一个级别。
输出量
为每个附加级别再嵌套一次转换查询。
输出量