指示杰克逊从给定的方法序列化

时间:2015-12-05 12:00:56

标签: java json serialization jackson

我正在使用杰克逊图书馆与2.6.3。我想在类中定义序列化方法,我想指示Jackson在序列化对象时调用此方法。

E.g。

public interface AClass {

  default String toJSON(){
    return "{JSON}";
  }

}

然后我

public class AnotherClass {

  AClass aClass;

}

当我序列化AnotherClass时,我“假装”调用来自A toJson的方法Class以返回对象的JSON视图。

我可以在AClass上使用任何注释吗?

1 个答案:

答案 0 :(得分:1)

是的,可以使用@JsonValue@JsonRawValue注释。这是一个例子:

uasort($ary, function ($a, $b) {
    return floatval($b->price) - floatval($a->price);
});

输出:

public class JacksonValue {
    public interface AClass {

        @JsonValue
        @JsonRawValue
        default String toJSON(){
            return "{\"JSON\":true}";
        }

    }

    public static class AnotherClass {
        @JsonProperty
        AClass aClass = new AClass() {};
    }

    public static void main(String[] args) throws JsonProcessingException {
        final ObjectMapper mapper = new ObjectMapper();
        System.out.println(mapper.writeValueAsString(new AnotherClass()));
    }
}