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);
我正在使用 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);