2013-04-05 34 views
0

我有一个实体,我序列化到JSON以及从JSON deserailizing:德/序列化一个枚举类型与杰克逊

public class Item { 
    @JsonProperty private Status status; 

.... 

} 

的状态枚举的样子:

public enum Status { 

    NEW, 
    ACTIVE, 
    PENDING, 
    ERROR; 
} 

我想要的注解枚举类型来序列化为,例如,{status:“NEW”}和相同的反序列化枚举类型。有没有单独的注释呢?

回答

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"); 
    } 
} 

这些也确保您的身份转换为不区分大小写(因此“新”的状态仍然会转换为正确枚举)。

+0

杰出!谢谢。 – badgerduke 2013-04-08 13:44:12