JSON 图书馆的蛇箱 class
JSON snake case for library class
我有一个 class 正在扩展一些库 class。
如何将 class 属性扩展为驼峰式大小写。
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
class Test extends Abc {
}
// Library class which I can't modify
class Abc {
private firstName;
}
如何将 firstName 设为 first_name
你可以使用 mixin 。
基本上,您在另一个 class 上定义注释,然后将真正的 class 关联到您的 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。
我有一个 class 正在扩展一些库 class。 如何将 class 属性扩展为驼峰式大小写。
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
class Test extends Abc {
}
// Library class which I can't modify
class Abc {
private firstName;
}
如何将 firstName 设为 first_name
你可以使用 mixin 。 基本上,您在另一个 class 上定义注释,然后将真正的 class 关联到您的 objectMapper
中的 mixinpublic 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。