java—在jackson中使用原始值构造函数反序列化json,而不使用自定义jsondeserializer

v6ylcynt  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(276)

我有一个类,我想通过使用一个方法调用构造函数来反序列化它,该方法接受完整的json对象作为字符串:

public class MyDataObject {

    @IwantObjectMapperToCallThisWhenDeserializing
    public MyDataObject(String json) {
      // custom logic
    }
}

有没有可能只通过简单的注解就可以实现,而不需要输入我自己的注解 JsonDeserializer ?

ghhkc1vu

ghhkc1vu1#

我没有找到直接的方法,但这里有一个解决方法:

public class MyDataObject {

    @JsonCreator(mode = Mode.DELEGATING)
    // passed object is a Map, but as long as the type is serializable below, it can by any type
    public MyDataObject(Object map) {
        String json;
        try {
            json = new ObjectMapper().writeValueAsString(map);
        } catch (JsonProcessingException e) {
            throw new RuntimeException("Error deserializing MyDataObject", e);
        }
        // custom logic
    }
}

相关问题