当前位置: 首页 > 面试题库 >

想要隐藏杰克逊正在映射到JSON的对象的某些字段

冯鸿哲
2023-03-14
问题内容

我有一个User类,我想使用Jackson映射到JSON。

public class User {
    private String name;
    private int age;
    prviate int securityCode;

    // getters and setters
}

我使用-将其映射到JSON字符串

User user = getUserFromDatabase();

ObjectMapper mapper = new ObjectMapper();   
String json =  mapper.writeValueAsString(user);

我不想映射securityCode变量。有什么方法可以配置映射器,使其忽略此字段?

我知道我可以编写自定义数据映射器或使用Streaming API,但我想知道是否可以通过配置来做到这一点?


问题答案:

您有两种选择:

  1. 杰克逊致力于田野工匠。因此,您只需删除要在JSON中省略的字段的getter。(如果您不需要在其他地方使用吸气剂。)

  2. 或者,您可以在该字段的getter方法上使用@JsonIgnore Jackson的注释,并且在结果JSON中看不到这样的键/值对。

        @JsonIgnore
    public int getSecurityCode(){
       return securityCode;
    }


 类似资料:
  • 我不想映射变量。是否有任何方法可以配置映射器,使其忽略此字段? 我知道我可以编写自定义数据映射器或使用流式API,但我想知道是否可以通过配置来实现?

  • 问题内容: 我有一个JSON对象,例如: 要么 要么 等等 我正在尝试将上述JSON映射到: 上面的映射工作正常,但是将来会有更多的“ Grade”类型让我们说D,E等,这会破坏现有的映射并引发以下异常 有没有办法忽略带有枚举类型的未知字段? 谢谢 问题答案: 我认为您应该为枚举定义外部解串器。 我在枚举中添加了其他字段-未知: 现在,解析器可能看起来像这样: 用法示例: 输出: 如果您不想添加其

  • 问题内容: 我在使用Jackson映射Javascript发布的哈希表(标记)数组时遇到问题。 这是控制器@RequestBody接收到的数据(以正确的json requestheader发送): 这是控制器: 当我调试并查看“实体”值时,它显示为通用对象的ArrayList,而不是我期望的“标签”类型的对象列表。 我如何让杰克逊将传递的对象数组映射到“标签”类型的对象列表? 谢谢 问题答案: 听

  • 问题内容: 这是我的Java代码,用于反序列化,我正在尝试将json字符串转换为java对象。为此,我使用了以下代码: 和我的product.java类 我收到以下错误。 帮我解决这个问题 问题答案: 似乎您正在尝试从JSON读取一个实际描述数组的对象。Java对象使用花括号映射到JSON对象,但是您的JSON实际上以方括号指定一个数组开始。 您实际拥有的是一个。为了描述泛型类型,由于Java的类

  • 问题内容: 我如何使用jackson像下面的示例那样创建json数组。 我尝试使用ObjectMapper,但这似乎不正确。 最终,我将制作一个具有以下值的json。 这是我提供的一个示例json。 编辑1 提出以下更接近的json,但我不知道为什么在{}之前和之后加引号。 最终答案 问题答案: 您需要一个: 此类具有创建s,s,s,s,s和诸如此类的方法。s和s具有便捷的变异方法,可以直接添加大

  • 我如何告诉Jackson忽略JSON名称? 我有以下POJO: 当我有这样的东西: “ABCName”:“foo”,然后杰克逊没有认出它抛出错误。 它期望的是: “abcName”:“foo”。 代码: 输出:{"abcname":"Foo"} 然后我试着用@JsonProperty(“ABCName”)注释ABCName 在我注释并运行代码之后,我得到的是:{“ABCName”:“Foo”,“A