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

如何只序列化杰克逊的孩子的身份证

皇甫喜
2023-03-14
问题内容

在使用Jackson(fasterxml.jackson
2.1.1)时,是否有内置的方法仅序列化孩子的ID?我们要发送一个Order通过REST的Person参考文件。但是person对象非常复杂,我们可以在服务器端刷新它,因此我们需要的只是主键。

还是我需要一个定制的序列化器?还是我需要@JsonIgnore其他所有属性?这样可以防止Person在请求Order对象时将数据发送回去吗?我不确定是否需要它,但我想尽可能控制它。


问题答案:

有几种方法。第一个是使用@JsonIgnoreProperties来删除子级的属性,如下所示:

public class Parent {
   @JsonIgnoreProperties({"name", "description" }) // leave "id" and whatever child has
   public Child child; // or use for getter or setter
}

另一种可能性,如果Child对象始终被序列化为id:

public class Child {
    // use value of this property _instead_ of object
    @JsonValue
    public int id;
}

还有一种方法是使用 @JsonIdentityInfo

public class Parent {
   @JsonIdentityInfo(generator=ObjectIdGenerators.PropertyGenerator.class, property="id")
   @JsonIdentityReference(alwaysAsId=true) // otherwise first ref as POJO, others as id
   public Child child; // or use for getter or setter

   // if using 'PropertyGenerator', need to have id as property -- not the only choice
   public int id;
}

这也适用于序列化,并忽略id以外的属性。结果不会包装为对象。



 类似资料:
  • 有没有办法让Jackson序列化某个流对象(并在之后关闭)?这样地: 使现代化 澄清:我想流式传输内容,而不仅仅是将其序列化到单个String对象。

  • 问题内容: 我想在使用Jackson时定义我的自定义序列化策略(要包括的字段)。我知道,我可以使用视图/过滤器来做到这一点,但是它引入了非常不好的一件事- 使用字段名称的字符串表示形式,这会自动导致自动重构出现问题。 如何迫使Jackson序列化仅带注释的属性,仅此而已? 问题答案: 如果禁用所有自动检测,则应仅序列化已注释的属性-无论是属性本身还是吸气剂。这是一个简单的例子:

  • 问题内容: 我有一个JSON字符串,将标记为而不是。因此,例如,如果我有一个没有子对象的对象,我将收到类似以下的字符串: 我想将其反序列化为Parent类,并将子级正确设置为一个空的子级列表。 对于上述JSON字符串,我想要一个对象,其设置为,而设置为。 我会知道如何在整个课堂上使用注释 然后 但是,我想解决一个从字符串正确实例化List的一般问题: 我能得到类似的东西吗? 问题答案: 几个选择;

  • 问题内容: 我有以下课程- 我正在使用objectMapper.valueToTree(sections)将其转换为JsonNode。但是,当我打印相同的内容时,我仅从Entity类中看到id和name字段,而从Images列表中看不到任何内容。我是否需要添加任何种类的特殊逻辑或注释以确保同时打印列表。 以下是主要课程- 问题答案: 您需要为Entity#images添加getter和setter

  • 我明白它无法从嵌套JSON反序列化字符串。我解决这个问题的一个方法是通过编写自定义映射器 但是只要pojo中有变化,这就需要修改映射器,添加/删除字段。Mixin工作时没有任何变化,我该如何更新我的Mixin来处理objectId呢?

  • 我想用scala中的jackson反序列化json json_结构: {“type”:“struct”,“fields”:[{“name”:“code_role”,“type”:“string”,“nullable”:true,“metadata”:{“HIVE_type_string”:“string”},{“name”:“libelle_role”,“type”:“string”,“nulla