Gson 2.2.4 ile bunun gibi basit bir sırayı nasıl serileştirebilir ve seri hale getirebilirim?, enum ile serileştirin ve seri hale getirin Gson
public enum Color {
RED, BLUE, YELLOW;
}
Gson 2.2.4 ile bunun gibi basit bir sırayı nasıl serileştirebilir ve seri hale getirebilirim?, enum ile serileştirin ve seri hale getirin Gson
public enum Color {
RED, BLUE, YELLOW;
}
Gson API documentation göre, GSON böylece temelde serileştirilebilen ve başka tür olduğu gibi, standart toJson
ve fromJson
yöntemlerle serisi kaldırılan edilmelidir, Enum
varsayılan seri hale getirme/deserialization sağlar.
Bunu deneyebilirsiniz.
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;
}
}
Not: Bu, GSON'un eski sürümleriyle çalışmaz. Sürüm 2.1 ve üstü ile çalışır. –
2.2.4 sürümünü istedi, bu yüzden evet –
Bu gerçekten harika bir yaklaşım. Sık sık kullandım ve GSON'un daha yeni sürümlerinde, kullanıcıların bu yaklaşımı kullanmaya eğilimli olmaları gerek çünkü özlü ve karmaşık özel serileştirme/serileştirme kodu gerektirmiyor. – jwir3
olsa GSON hangi sürümünü gelen bu ince, hem de bilmiyorum işleri: varsayılan olarak
public enum OrderLineTimeRegistrationStatus {
None(0), Started(1), Paused(2);
private int value;
private OrderLineTimeRegistrationStatus(int value)
{
this.value=value;
}
public int getValue()
{
return(value);
}
}
Korkarım ki çalışmıyor. Gson 2.8.0'ı kullanma. Nasıl olsa işe yarayabilir? Gson akıllı, ama o kadar akıllı değil. – waste
, GSON serializes ve enum yerine sıra değeri adını kullanarak deserializes. Tüm Enum'ları sıra değerlerine göre işlemek için bir seri hale getirici ve serpiştirici oluşturmanın bir yolu var mı? – Churro
Numara için '@ SerializedName 'ek açıklama ekleyebilirsiniz. Benim dizgimin String.valueOf (ordinal) olarak serileştirilmesini sağlayacak – ViliusK
@ViliusK, serileştirilmiş enumumu int türetmek için benzer bir açıklama veya yol var mı? Örneğin. "color": 1 istediğim, "color" değil: "1". – Behnam