使用Jackson对枚举器类型进行序列化/序列化

时间:2013-04-05 19:54:53

标签: jersey jackson

我有一个实体,我正在序列化为JSON,并且还从JSON中取消了作用:

public class Item {
    @JsonProperty private Status status;

....

}

状态枚举如下所示:

public enum Status {

    NEW,
    ACTIVE,
    PENDING,
    ERROR;
}

我希望带注释的枚举类型序列化为,例如,{status:“NEW”},并将其反序列化为枚举类型。是否有单独的注释?

1 个答案:

答案 0 :(得分:1)

你的枚举需要一些额外的方法:

@Override
@JsonValue
public String toString()
{
    return super.toString().toUpperCase(Locale.ENGLISH);
}

@JsonCreator
public static Status fromString(final String status)
{
  if (status == null)
  {
    return null;
  }
  try
  {
    return valueOf(status.toUpperCase(Locale.ENGLISH));
  }
  catch (IllegalArgumentException iae)
  {
    System.err.println("Invalid status");
  }
}

这些还可以确保您的状态转换不区分大小写(因此“' new'状态仍会转换为正确的枚举”。