Jackson 序列化不包括异常字段的类型信息

Jackson serialization doesn't include type info for Exception field

我正在使用 Jackson Object Mapper 2.10。

我正在创建我的 ObjectMapper 实例,如下所示:

        final ObjectMapper objectMapper =
                new ObjectMapper().activateDefaultTyping(BasicPolymorphicTypeValidator.builder()
                                                                                      .allowIfBaseType(Object.class)
                                                                                      .build());

我正在尝试序列化下面定义的 TestClass class 的对象

class TestClass {
   Map<String, TestException> exceptionMap;
}

class TestException extends RuntimeException {
}

但是,当我执行 objectMapper.writeValueAsString(obj) 时,我得到

{
  "exceptionMap": [
    "java.util.HashMap",
    {
      "key": 
        {
          "exception": {
            "cause": {
              "cause": null,
              "localizedMessage": "causeMessage",
              "message": "causeMessage",
              "stackTrace": [],
              "suppressed": []
            },
            "localizedMessage": "message",
            "message": "message",
            "stackTrace": [],
            "suppressed": []
          }
        }
    }
  ]
}

不包括异常对象的类型信息。

我能够使用以下配置获取所有类型的类型信息,包括异常:

new ObjectMapper().activateDefaultTyping(
  BasicPolymorphicTypeValidator.builder()
     .allowIfBaseType(Object.class)
     .build(), 
  ObjectMapper.DefaultTyping.EVERYTHING);