java - 库类的 JSON 蛇案例
问题描述
我有一个类正在扩展一些库类。如何将类属性扩展为驼峰式。
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
class Test extends Abc {
}
// Library class which I can't modify
class Abc {
private firstName;
}
如何将firstName设为first_name
解决方案
你可以使用 mixin 。基本上,您在另一个类上定义注释,然后将真实类与 objectMapper 中的 mixin 相关联
public class JacksonMixin {
@JsonAutoDetect(fieldVisibility = JsonAutoDetect.Visibility.ANY)
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
abstract class MixinAbc{}
// Library class which I can't modify
class Abc {
private String firstName;
}
@Test
public void testMixin() throws JsonProcessingException {
ObjectMapper objectMapper = new ObjectMapper();
objectMapper.addMixIn(Abc.class, MixinAbc.class);
Abc value = new Abc();
value.firstName="bill";
String writeValueAsString = objectMapper.writeValueAsString(value);
Assert.assertEquals("{\"first_name\":\"bill\"}", writeValueAsString);
}
}
编辑: addMixInAnnotation 已弃用,现在只是 addMixIn 。
推荐阅读
- php - PHP:验证其字段后的表单重定向
- python-3.x - Kears fit_generator() with y=None
- javascript - 与 TypeScript 反应:类型不可分配给类型“IntrinsicAttributes”
- r - 预测时使用的阈值
- java - Android AsynTask 中的 ArrayList
- matlab - 查找平面和点云之间的相交点
- mongodb - 当 _id 不是默认的 ObjectId() 时,按 _id 排序时的排序行为如何?
- azure - 如何在 Azure Devops VSO 上进行调试
- c++ - 计算一个单词在地图中出现的次数 - 使用 transform() - 调用不匹配
- php - 在 Laravel 中将整数和日期列更新为空