2013-05-24 10 views

Odpowiedz

18

Według Gson API documentation, Gson zapewnia domyślne serializacji/deserializacji Enum, więc w zasadzie powinno być szeregowane i rozszeregować użyciu standardowych toJson i fromJson metody, jak w przypadku każdego innego typu.

+8

domyślnie Gson serializes i deserializes używając nazwy enum zamiast wartości porządkowej. Czy istnieje sposób na ustawienie jednego serializera i deserializatora, aby obsłużyć wszystkie Enums według ich wartości porządkowych? – Churro

+11

Możesz dodać adnotację '@ SerializedName' dla wyliczenia. – ViliusK

+7

@ViliusK, który uczyni moje wyliczenie serializować jako String.valueOf (porządkowy), czy istnieje podobna adnotacja lub sposób, aby moje wyodrębnione serializowane int? na przykład "kolor": 1 to, czego chcę, a nie "kolor": "1". (pamiętajcie, podwójne cytaty około 1) – Behnam

130

Możesz spróbować tego.

import com.google.gson.annotations.SerializedName; 

public enum Color { 

    @SerializedName("0") 
    RED (0), 

    @SerializedName("1") 
    BLUE (1), 

    @SerializedName("2") 
    YELLOW (2); 

    private final int value; 
    public int getValue() { 
     return value; 
    } 

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

} 
+2

Uwaga: to nie działa w przypadku starszych wersji GSON. Działa z wersją 2.1 i nowszą. –

+5

Poprosił o wersję 2.2.4, więc tak –

+0

To naprawdę świetne podejście. Często go używam i uważam, że w nowszych wersjach GSON użytkownicy powinni skłaniać się ku użyciu tego podejścia, ponieważ jest zwięzły i nie wymaga złożonego niestandardowego kodu serializacji/deserializacji. – jwir3

1

Działa to dobrze, jak dobrze, nie wiem z jakiej wersji GSON choć:

public enum OrderLineTimeRegistrationStatus { 
    None(0), Started(1), Paused(2); 

    private int value; 

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

    public int getValue() 
    { 
     return(value); 
    } 
} 
+2

Obawiam się, że nie działa. Korzystanie z Gson 2.8.0. Jak to może działać? Gson jest inteligentny, ale nie taki mądry. – waste

Powiązane problemy