2013-04-05 35 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