当前位置: 首页 > 知识库问答 >
问题:

意外标记(END_OBJECT),应为field_name:缺少属性“@type”

楚知
2023-03-14
mapper.configure(DeserializationFeature.FAIL_ON_INVALID_SUBTYPE,false);

com.fasterxml.jackson.databind.JSONMappingException:意外标记(END_OBJECT),应为field_name:缺少包含类型id的属性“@type”(对于类com.test.guestprofile)

共有1个答案

姚洲
2023-03-14

当使用接口或多态类型时,Jackson JSON库抛出此异常。GuestProfile必须是多态类型,或者是接口、抽象类,或者是实际实现并且具有父级。

这个多态类型可以配置为使用JSON中的type提示。寻找类似的东西

@jsonTypeInfo(使用=jsonTypeInfo.id.name,包括=jsonTypeInfo.as.property)

对象的序列化JSON值当前需要附加属性'@type'。由于您不能更改JSON的生成,因此这不是一个适合您的解决方案。

如果只有一个实现,那么您可以使用:

@JsonDeserialize(as=GuestProfile.class)

这是杰克逊的一个新特点,并不是一直都有。

否则,可以自定义反序列化过程。您可以配置自己的反序列化器,然后查看传入值,并根据内容决定反序列化到哪个目标对象类型。

参见https://github.com/fasterxml/jackson-docs/wiki/jacksonPolymorphicDeserialization

 类似资料:
  • 我正在从2X迁移到5X,我的查询失败了。这是我得到的错误: [multi_match]格式错误的查询,预期[END_OBJECT]但找到[FIELD_NAME]“,”line“:32,”col“:13}”,“type”:“parsing_exception”,“reason”:“[multi_match]格式错误的查询,预期[END_OBJECT]但找到[FIELD_NAME]”,“line”:3

  • 我对elasticsearch查询有一些问题。当我使用查询代码时,它反馈消息[bool]格式错误的查询,预期的是[END_OBJECT],但发现的是[FIELD_NAME]。

  • 我试图编写一个调用REST服务的web应用程序。REST服务需要用户的OAuth令牌。使用用户的用户名和密码,我可以获得一个SAML令牌(下面的第一个断言),OAuth STS可以使用该令牌向我发出一个有效的OAuth令牌。因为我在一个web应用程序中,所以我更喜欢使用ActAs SAML令牌,而不是提示输入已经通过域(SSO)身份验证的用户的用户名和密码。当我将ADFS 2.0配置为发出ActA

  • 我正在VSCode中使用OpenAPI 3编写一个API文档,扩展为OpenAPI(Swagger)Editor v4.9.1。直到今天它都运行良好-突然我的文档在所有模式声明中充满了“属性”错误。错误是:

  • 你好,我尝试在其他问题中搜索,但没有一个提到的解决方案,我尝试对我不起作用。 使用命令时: npm启动 我有一个错误: /src/index.js模块生成失败(来自./node_modules/babel-loader/lib/index.js):语法错误:d:/kodilla/projekty/webpack-to-do-app/src/index.js:意外>令牌(6:4) package.j

  • 反应组分 如何在组件中声明输入组件?