我检索一个JSON字符串从互联网;像大多数JSON一样,我看到它包含用下划线分隔的长键。从本质上讲,我的目标是将JSON反序列化为java对象,但我没有在java代码中使用下划线。
例如,我可能有一个用户类的firstName字段在驼峰情况下,同时我需要以某种方式告诉杰克逊映射first_name键从JSON到firstName类字段。这可能吗?
class User{
protected String firstName;
protected String getFirstName(){return firstName;}
}
如果你想要一个类,你可以使用PropertyNamingStrategies和@JsonNaming,注释,像这样:
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class Request {
String businessName;
String businessLegalName;
}
将序列化到:
{
"business_name" : "",
"business_legal_name" : ""
}
Jackson 2.7之前,使用PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy.class:
@JsonNaming(PropertyNamingStrategy.LowerCaseWithUnderscoresStrategy.class)
public static class Request {
String businessName;
String businessLegalName;
}
从Jackson 2.7到Jackson 2.12, LowerCaseWithUnderscoresStrategy被弃用,取而代之的是SnakeCaseStrategy,所以你应该使用:
@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
public static class Request {
String businessName;
String businessLegalName;
}
自Jackson 2.12以来,PropertyNamingStrategy。SnakeCaseStrategy已弃用,取而代之的是PropertyNamingStrategies。你应该使用SnakeCaseStrategy:
@JsonNaming(PropertyNamingStrategies.SnakeCaseStrategy.class)
public static class Request {
String businessName;
String businessLegalName;
}