Java 库类的JSON snake案例

Java 库类的JSON snake案例,java,json,snakecasing,Java,Json,Snakecasing,我有一个类正在扩展一些库类。 如何将类属性扩展为camel大小写 @JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class) class Test extends Abc { } // Library class which I can't modify class Abc { private firstName; } 如何将名字设置为名字您可以使用mixin。 基本上,在另一个类上定义注释,然后在objectMapper

我有一个类正在扩展一些库类。 如何将类属性扩展为camel大小写

@JsonNaming(PropertyNamingStrategy.SnakeCaseStrategy.class)
class Test extends Abc {
}



// Library class which I can't modify
class Abc {
  private firstName;
 }
如何将名字设置为名字

您可以使用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);

    }

}
编辑:AddMixinNotation已被弃用,它现在只是addMixIn。

您可以使用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);

    }

}

编辑:AddMixinNotation已被弃用,现在只是addMixIn。

AFAIK,你只能制作一个使用snake-case的包装函数。AFAIK,你只能制作一个使用snake-case的包装函数。