Java JSON字符串序列化(到驼峰大小写)和反序列化(从snake大小写)使用Jackson
我试图将json字符串反序列化为POJO,然后使用Jackson将其序列化回json字符串,但在此过程中,我希望生成的json字符串更改键值 e、 g.输入json字符串: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(){
{"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节)。这可能会导致与其他框架的兼容性问题,如果您的工作将由其他开发人员维护,则可能会导致混淆。