Jak mogę serializować i deserializować proste wyliczanie w ten sposób z gson 2.2.4?serializować i deserializować wyliczać z Gsonem
public enum Color {
RED, BLUE, YELLOW;
}
Jak mogę serializować i deserializować proste wyliczanie w ten sposób z gson 2.2.4?serializować i deserializować wyliczać z Gsonem
public enum Color {
RED, BLUE, YELLOW;
}
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.
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;
}
}
Uwaga: to nie działa w przypadku starszych wersji GSON. Działa z wersją 2.1 i nowszą. –
Poprosił o wersję 2.2.4, więc tak –
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
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);
}
}
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
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
Możesz dodać adnotację '@ SerializedName' dla wyliczenia. – ViliusK
@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