使用Jackson 2.x作为字符串写入Throwable的子类时的null字段

时间:2017-10-21 18:00:48

标签: java jackson2

当我运行以下代码时:

public static void main(String[] args) throws JsonProcessingException {
    Throwable ex = new IllegalArgumentException("something is wrong");
    ObjectMapper objectMapper = new ObjectMapper();
    System.out.println(objectMapper.writeValueAsString(ex));
}

控制台的输出将显示Throwable类中'cause'字段中的值为null。这是因为循环引用 - 类'字段初始化为值'this'。

figured @JsonIdentityInfo是我正在寻找的,但是Throwable不是我创建的类,所以我需要使用Mixin。 {@ 3}}已弃用。在阅读了关于GitHub的documentation讨论之后,这是我最近添加mixin的尝试:

public static void main(String[] args) throws JsonProcessingException {
    Throwable ex = new IllegalArgumentException("something" +
            " wrong");
    ObjectMapper objectMapper = new ObjectMapper();
    objectMapper.addMixIn(Throwable.class, MyMixn.class);
    System.out.println(objectMapper.writeValueAsString(ex));
}

@JsonIdentityInfo(generator = ObjectIdGenerators.IntSequenceGenerator
        .class, property = "cause")
public static abstract class MyMixn {

}

但是,这只会在输出中添加另一个'cause'字段,值为1(除了前一个字段,空值)。

我想要的是简单地让'cause'字段输出简单的类名,所以我知道原因Exception。

0 个答案:

没有答案