Jackson序列化和@JsonValue:回到默认行为

时间:2014-11-20 15:06:35

标签: java jackson

我有一个简单的POJO:

public class Test {

    private String id;
    private boolean asString;

    // getters and setters

    @JsonValue
    public Object getValue() {
        if (asString) {
            return id;
        }

        // I want to use the default behavior of Jackson but i don't know what to do here
    }
}

如您所见,我试图使用@JsonValue来做出以下行为:

  • 如果asStringtrue,我想将我的对象序列化为一个简单的字符串。
  • 如果asStringfalse,我想使用Jackson的默认行为序列化我的对象。但我不知道该怎么做。

我还尝试制作自定义序列化程序,但我无法访问"默认序列化程序"杰克逊并称之为。

我怎样才能做到这一点?我希望在某种条件下将我的对象序列化为字符串,但是如果我愿意的话,我想要支持Jackson的默认行为。

1 个答案:

答案 0 :(得分:2)

你可以为这个类编写一个自定义反序列化器,它会检查asString,如果它是false,它本身会调用默认的jackson反序列化器。

关于如何在How do I call the default deserializer from a custom deserializer in Jackson

执行此操作,有一个很好的答案