我正在尝试将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"} .
有什么方法可以实现这个目标吗?
答案 0 :(得分:1)
你应该能够通过定义反序列化的创建者来解决这个问题,然后让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_DETECT_CREATORS
上停用ObjectMapper
才能生效。
答案 1 :(得分:1)
我能够通过根据输入的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;
}
}