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

Jackson ObjectMapper 忽略所有没有注释的属性

邢俊悟
2023-03-14

我的目标是将jsonObject转换为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;
    }
    ....
}

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

共有1个答案

周瀚
2023-03-14

使用@JsonIgnoreProperties为类添加批注,如下所示:

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

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

 类似资料:
  • 同时将warning的值设置为“all”或,没有任何结果。 checkstyle的文档很差。一些想法?

  • 我试图使用Jackson注释来重新命名序列化过程中产生的一些json标签。所有注释都编译得很好,当我运行时,除了所有Jackson注释之外,Jackson序列化工作完全被忽略。即使像@jsonignore或@jsonproperty这样的基本命令对json响应也没有影响。构建路径中的库有: 下面是我需要序列化的一个类的代码示例:

  • 有什么想法为什么@primary在这里没有被考虑在内吗?

  • 例如: 问题是,当我使用ObjectMapper进行序列化时,它会尝试序列化DbItem类的成员。有没有什么简单的方法可以预防呢?例如使用注释。 我看过一个类似的问题Jackson序列化:如何忽略超类属性,但我希望它可以做得更简单,我不确定我是否可以这样做,因为我不能更改超类,因为它在一个外部库中。

  • 问题内容: 我的@Transactionnal注释似乎被忽略了。我对Spring容器的初始化没有任何错误。看来我的方法尚未被Spring TX框架代理。在执行服务的方法期间,JDBCTemplate会引发预期的RuntimeException。问题在于JDBC连接没有回滚,并且更改保持不变。stacktrace没有显示应该包装我的服务方法的代理的任何迹象。 编辑:添加了控制器的代码 编辑2:添加了

  • 我正在迁移一个应用程序从weblogic 10.3到weblogic 12.2。 我包括一个与其他项目共享的库。此jar包含一些带有@EJB注释的POJO,如下所示: 请注意,这只是一个POJO:它没有@无状态或@有状态注释。这个想法是,当我想使用这个服务时,我在另一个ejb-jar中用一个具体的@无状态Bean类扩展它。但是我只希望这个服务是我需要的,其他服务应该被视为POJOS。 在weblo