使用Jackson的JSON字符串序列化(对于驼峰案例)和反序列化(来自蛇案例)

时间:2015-03-24 11:21:35

标签: 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(){
        return someKey ;
    };
}

当我再次序列化时,我希望json字符串是这样的

{"someKey":"value"} .

有什么方法可以实现这个目标吗?

2 个答案:

答案 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;
    }
}