2015-03-15 25 views
8

İstemci sınırlamalarının küçük harf olması gerektiğinden, Gson kullanarak enum değerlerini vermem gerekiyor. Örneğin, CLOSE_FILEclose_file.Küçük harf enum Gson

Bunu yapmanın basit bir yolu var mı? Ben JsonSerializer uygulayan bir sınıf yapmak için baktım ama sanırım tüm sınıf (tamamen karmaşık olan) el ile seri hale getirmek zorunda bu durumda?

cevap

14

enum türü üzerinde denetiminiz varsa, üyelerine @SerializedName numaranızı not edin ve uygun serileştirilmiş değeri verin. Eğer enum üzerinde kontrolü yoksa bir Gson örneğini oluştururken Örneğin,

enum Action { 
    @SerializedName("close_file") 
    CLOSE_FILE; 
} 

, özel bir TypeAdapter sağlarlar. Örneğin,

Gson gson = new GsonBuilder().registerTypeAdapter(Action.class, new TypeAdapter<Action>() { 

    @Override 
    public void write(JsonWriter out, Action value) throws IOException { 
     out.value(value.name().toLowerCase()); 
    } 

    @Override 
    public Action read(JsonReader in) throws IOException { 
     return Action.valueOf(in.nextString().toUpperCase()); 
    } 
}).create(); 
İlgili konular