序列化一个空类(没有字段)

时间:2014-09-08 08:53:23

标签: java jackson

我有以下课程:

class Foo {
    @JsonCreator
    public Foo() 
    {
    }
}

我得到以下例外:

  

com.fasterxml.jackson.databind.JsonMappingException:没有为类Foo找到序列化程序,也没有发现创建BeanSerializer的属性(为了避免异常,请禁用SerializationFeature.FAIL_ON_EMPTY_BEANS))

无法以这种方式序列化。而且我不想忽略该值,我只想将{}输出视为JSON。 任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:2)

您必须禁用SerializationFeature.FAIL_ON_EMPTY_BEANS选项。见下面的例子:

ObjectMapper mapper = new ObjectMapper();
mapper.disable(SerializationFeature.FAIL_ON_EMPTY_BEANS);
System.out.println(mapper.writeValueAsString(new Foo()));

以上程序打印:

{}

另见:

  1. Serialization features
  2. Deserialization Features
  3. Mapper Features

答案 1 :(得分:1)

在这种情况下,我会使用 @JsonSerialize 注释:

import com.fasterxml.jackson.databind.annotation.JsonSerialize;

@JsonSerialize
public class Foo {
  public Foo() {}
}

请注意,您需要为maven添加此依赖项:

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>${jackson.version}</version>
</dependency>