Jackson2JavaTypeMapper信任指定包问题:如何信任com.domain下所有类?
问题描述
使用*信任所有包时程序正常运行,但希望仅信任com.domain域名下的包,尝试以下代码后未生效:
if (javaTypeMapper instanceof DefaultJackson2JavaTypeMapper) { javaTypeMapper.addTrustedPackages("com.domain");
抛出异常:
java.lang.IllegalArgumentException: The class 'com.domain.service.dto.name.SomeDto' is not in the trusted packages: [java.util, java.lang, com.domain]. If you believe this class is safe to deserialize, please provide its name. If the serialization is only done by a trusted source, you can also enable trust all (*).
如何信任com.domain包下的所有内容?
解决方案
问题出在addTrustedPackages的参数规则上:传入"com.domain"只会信任这个一级包本身,不会递归覆盖其子包。要信任com.domain下所有层级的子包,需要添加通配符**:
if (javaTypeMapper instanceof DefaultJackson2JavaTypeMapper) { javaTypeMapper.addTrustedPackages("com.domain.**"); }
额外注意点:
- 补充原代码缺失的闭合
},保证语法完整性。 - 若为Spring环境,也可通过配置文件全局设置信任包:
spring.jackson.deserialization.trusted-packages=com.domain.**
内容的提问来源于stack exchange,提问作者dev-rifaii
相关产品推荐
相关产品推荐

