Jackson向JSON添加附加字段时会抛出com.fasterxml.jackson.databind.exc.无效定义异常

flvtvl50  于 2022-11-08  发布在  其他
关注(0)|答案(1)|浏览(164)

我正在使用Jackson来序列化我的Java POJO类。除了字段,我在Java POJO中还有,我想在JSON中添加一些额外的信息。我正在编写我自己的自定义CustomClassSerializer。如果我使用此类并注册到ObjectMapper,则会收到错误:

Exception in thread "main" com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Type id handling not implemented for type org.acme.Tiger (by serializer of type org.acme.CustomModule$CustomClassSerializer)

我不能理解这里可能出了什么问题。如果我删除自定义注册模型,那么一切都会完美地工作。
有人能告诉我这个问题的原因吗?我目前使用的是Jackson2.13.2最新版本的依赖项:jackson-core, jackson-databind, jackson-annotations, jackson-datatype-jdk8
下面是示例代码:
第一个问题
我想知道上述例外的原因是什么。

vulvrdjw

vulvrdjw1#

作为一个面向Gson的人,我不认为我能写出真正有效的Jackson代码,但我想你可以结合下面的Q/A来解决你的问题:

此外,我还想重构您的代码(很多),以便通过使用策略设计模式(在必要的地方)使其灵活,并演示它如何使用简单的单元测试工作。
第一个
我希望上面的代码是非常自我解释的。如果你需要使用额外的属性名转换,你可能还想增强代码,以便使identityNameTransformer也可以注入。
与主题无关,但在您的问题中重复JSON对象属性名称(如my_extra_field)可能被认为是不推荐的(不确定是否易受攻击)。Does JSON syntax allow duplicate keys in an object?

相关问题