使用jackson将bean序列化为空json文档,仅限一个类

时间:2016-09-28 16:32:48

标签: java json serialization jackson

我有一个需要在HTTP POST中发送json数据的Web服务客户端。我需要在其中一个字段中提供一个空的json对象。我不能省略该字段,它必须是一个对象,我不应该在该对象内提供任何字段,因为这会改变结果。只有空对象才会这样做。

这可以单独使用注释在杰克逊完成吗?如果有任何序列化或映射配置,我需要它只适用于此类。我希望JsonIncludeJsonSerialize有一个神奇的选择。

所需的序列化输出:

{
  "field1": "value1",
  "field2": "value2",
  "field3": {}
}

这非常接近我的Java类:

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class BeanClass implements Serializable {
  private static final long serialVersionUID = 1L;

  @JsonProperty("field1")
  private String field1;

  @JsonProperty("field2")
  private String field2;

  @JsonProperty("field3")
  private EmptyBean field3;
}

EmptyBean类几乎看起来像这样:

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class EmptyBean implements Serializable {
  private static final long serialVersionUID = 1L;
}

使用注释关闭FAIL_ON_EMPTY_BEAN序列化选项的方法可以为我完成此操作。 This answer看起来很有前景,但侧重于配置,看起来它适用于我的整个应用程序(我不想要那样)。

我希望尽可能通过注释来解决这个问题。但只要我有办法改变这个类的映射,我就会很高兴。

0 个答案:

没有答案