2012-10-02 9 views
7

Ich habe die folgende Enumeration in Java auf Android und ich möchte in der Lage sein, eine Ganzzahl in einem eingehenden JSON String/Objekt in diesem Enum-Typ zu deserialisieren. Ich habe Hits über Jackson und GSON bekommen, aber nichts über das JSON.org-Paket, das ich benutze.Deserialize JSON zu Java Enum

Gibt es eine einfache Möglichkeit, dies zu tun, oder muss ich den JSON-Decoder ändern? Vielen Dank.

public enum ValueEnum { 

    ONE(1), 
    TWO(2), 
    THREE(3); 

    private int value; 

    private ValueEnum(int value) { 
     this.value = value; 
    } 

    public int getValue() { 
     return value; 
    } 
} 

Antwort

7

ValueEnum.values() werden Sie Array von ValueEnum return [], dann können Sie Array iterieren und überprüfen Value

public static ValueEnum valueOf(int value) { 
     ValueEnum[] valueEnums = ValueEnum.values(); 
     for (ValueEnum valueEnum : valueEnums) { 
      if (valueEnum.getValue() == value) 
      { 
       return valueEnum; 
      } 
     } 
     return DEFAULT; 
    } 
+0

Das tolle Sachen ist, Dank. – conor