java - 在现有模型对象内传递对象,其中新对象参数未定义并且可能会更改

标签 java json spring-boot jackson

问题:我有一个请求正文,其中有一个预定义的 POJO 类,在该类中我需要添加另一个对象作为参数。这个新对象在给定时间可能具有随机属性/属性/参数。我怎样才能实现这个目标?

{
 "id": "{{id}}",
 "enableTouchId": true,
 "idleLogoutMinutes": 10,
 "platformSpecificPreferences": {
  "ios": {
   "terms": "1234",
   "privacy": "12345"
  },
  "web": {
    "terms" : "abc"
  },
  "android": {
    "newProperty" : "newValue"
  }
 }
}

因此,我尝试添加的新对象是 platformSpecificPreferences,当使用其余调用命中时,它可能具有也可能不具有此处显示的所有属性,这就是为什么我无法将重新定义的 POJO 类用于 platformSpecificPreferences 并创建其对象。

我尝试过的解决方案: 我想到在请求正文中使用 JsonObject,这使得

@JsonProperty("platformSpecificPreferences")
    private JsonObject platformSpecificPreferences;

但问题是,我无法访问 api,因为它不接受此参数并给出 404。

提前致谢。

最佳答案

您可以使用,kind 必须是 platformSpecificPreferences 的预定义 pojo,但在 pojo 中您需要忽略其余调用中未给出的值!

您可以在类上方的 Pojo 中使用 json 注释来完成此操作:@JsonIgnoreProperties(ignoreUnknown = true)。

关于java - 在现有模型对象内传递对象,其中新对象参数未定义并且可能会更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48419643/

相关文章:

ios - 如何从使用 JSON (Swift) 检索的存储的 Int/String 中删除方括号 [ ]?

java - 如何在使用 ResponseStatusException 时记录异常信息

java - NoSuchAlgorithmException : TLSv1. 2 未知协议(protocol)

Java返回正确类型的枚举

c# - 在 AWS Lambda (C#) 中反序列化嵌套的 JSON 字符串

python - 如何将页面源代码中的json解码为字典?

java - Spring Boot中的初始化和调度

javascript - 如何将 thymeleaf 片段加载到 js 变量中

java - 为什么第二次拒绝连接?

java.lang.AbstractMethodError : org. jboss.arquillian.config.descriptor.impl.EngineDefImpl.getDeploymentExportExploded()Ljava/lang/Boolean;