Java JSON字符串序列化(到驼峰大小写)和反序列化(从snake大小写)使用Jackson

Java JSON字符串序列化(到驼峰大小写)和反序列化(从snake大小写)使用Jackson,java,json,serialization,jackson,json-deserialization,Java,Json,Serialization,Jackson,Json Deserialization,我试图将json字符串反序列化为POJO,然后使用Jackson将其序列化回json字符串,但在此过程中,我希望生成的json字符串更改键值 e、 g.输入json字符串: {"some_key":"value"} 这是我的POJO的样子 public class Sample { @JsonProperty("some_key") private String someKey; public String getSomeKey(){

我试图将json字符串反序列化为POJO,然后使用Jackson将其序列化回json字符串,但在此过程中,我希望生成的json字符串更改键值

e、 g.输入json字符串:

{"some_key":"value"} 
这是我的POJO的样子

public class Sample {    
    @JsonProperty("some_key")
    private String someKey;         
    public String getSomeKey(){
        return someKey ;
    };
}
当我再次序列化它时,我希望json字符串是这样的

{"someKey":"value"} .

有什么方法可以实现这一点吗?

您应该能够通过定义用于反序列化的创建者,然后让Jackson执行其用于序列化的默认行为来实现这一点

public class Sample {    
    private final String someKey;

    @JsonCreator
    public Sample(@JsonProperty("some_key") String someKey) {
        this.someKey = someKey;
    }

    // Should serialize as "someKey" by default
    public String getSomeKey(){
        return someKey;
    }
}

您可能需要禁用
MapperFeature.AUTO\u DETECT\u CREATORS
在您的
ObjectMapper
上才能工作。

我可以通过根据输入的json字符串重命名setter函数来进行反序列化

class Test{
    private String someKey;
    // for deserializing from field "some_key"
    public void setSome_key( String someKey) {
       this.someKey = someKey;
    }


    public String getSomeKey(){
        return someKey;
    }
}

虽然这在技术上是可行的,但您的方法名并不遵循JavaBean命名约定(请参阅中的第8.8节)。这可能会导致与其他框架的兼容性问题,如果您的工作将由其他开发人员维护,则可能会导致混淆。