2015-11-06 82 views
0

我想通過GSON序列化和反序列化一個接口內的枚舉。 如果有人有東西,請幫助。 在此先感謝.. :)如何通過GSON對接口中的枚舉進行序列化和反序列化?

這裏是我的接口..

public interface Module { 
    @Expose 
    public enum CATEGORY { 
     INPUT, 
     OUTPUT, 
     LIGHTS,   
     COMMUNICATION, 
     ... 
    } 
    @Expose 
    public enum TYPE { 
     INPUT, 
     OUTPUT, 
     ANALOG, 
     DIGITAL, 
     ... 
    } 
} 

回答

0

try代碼在下面。

public class Tester { 

    public static void main(String[] args) { 

     Module.CATEGORY comm = Module.CATEGORY.LIGHTS; 
     Gson gson = new Gson(); 

     String json = gson.toJson(comm); 
     if (gson.fromJson(json, Module.CATEGORY.class) == Module.CATEGORY.LIGHTS) 
      System.out.println("It works!"); 

    } 
} 

打印:

它的工作原理!

序列化您的枚舉通過。

public interface Module { 

    public enum CATEGORY implements Serializable { 
     INPUT, 
     OUTPUT, 
     LIGHTS,   
     COMMUNICATION 
    } 
    public enum TYPE implements Serializable { 
     INPUT, 
     OUTPUT, 
     ANALOG, 
     DIGITAL 
    } 
} 
+0

另外爲此,我想在這裏使用它與Expose註解。 有些什麼這樣當我們添加註釋暴露,但它給錯誤 例如: - @expose 公共枚舉分類{ INPUT,OUTPUT , 燈, 通信 } – aditya

+0

你應該更新你的問題,一看便知爲@Expose - > http://stackoverflow.com/a/7430002/668572 –

0

試試這個:

Module.CATEGORY m = Module.CATEGORY.COMMUNICATION; 
Gson gson = new Gson(); 
System.out.println(gson.toJson(m)); 

這將打印枚舉的名稱,

+0

爲此,我希望在此使用Expose notation。 例如: - @expose 公共枚舉分類{ INPUT,OUTPUT , 燈, 通信 } – aditya

+0

有些什麼這樣當我們添加註釋暴露,但它給人的錯誤。 – aditya