【问题标题】:Jackson ObjectMapper ignore all properties that has no annotationJackson ObjectMapper 忽略所有没有注释的属性
【发布时间】:2016-10-04 11:36:21
【问题描述】:

我的目标是将 jsonObject 转换为 Class。我只想添加在 Class 中注释的字段。示例:json 对象包含 50 个字段。类有 4 个字段。我只想映射确切的 4 个字段,而不在类中添加 46 个添加忽略。

JSON:

{
  "id": "1",
  "name": "John",
  "Address": "Some Address 7009",
}

类:

public static class User {
    Integer id;
    String name;

    public User (@JsonProperty("id")Integer id, @JsonProperty("name")String name {
            this.id= id;
            this.name= name;
    }
    ....
}

用户类没有地址字段。我的目标是排除它,因为它没有注释。

【问题讨论】:

  • 你不需要为剩余的属性添加@JsonIgnore
  • 你看我的问题了吗?
  • 不可能这样。您可以在剩余属性上分配@JsonIgnore,也可以进行周转,您可以更改与对象属性不匹配的json键,反之亦然。
  • 您可以使用过滤器忽略特定字段。看看@JsonFilter

标签: java json jackson mongo-jackson-mapper


【解决方案1】:

@JsonIgnoreProperties注释你的类,如下:

@JsonIgnoreProperties(ignoreUnknown = true)
public class User {
    ...
}

ignoreUnknowntrue 时,所有无法识别的属性(即没有接受它们的设置者或创建者)都会被忽略而不发出警告(尽管仍会调用未知属性的处理程序,如果有的话)无一例外。

【讨论】:

  • 当任何新的属性在类中不可用时使用
  • TeodorKolev 在类中有 40 个属性,在 json 中有 40 个键,他只希望将 4 个属性转换为 Java 对象属性。剩下的应该是默认值,如 null、0 或其他。提供类级别的注释并不能解决这个问题
  • @Naman 你的 cmets 真的很傻。你应该阅读这个问题。
  • @Naman 我告诉你阅读这个问题。我输入了我在课堂上有 4 个字段
  • 您可能正在使用旧版本的库。我正在使用最新的杰克逊,我不需要手动提及这个属性。 BDW 祝你好运。
猜你喜欢
  • 2019-12-09
  • 2017-10-29
  • 2015-10-19
  • 1970-01-01
  • 2019-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多