2016-03-22 12 views
1

Veri modelimin bir parçası olarak bir numara kullanıyorum. Giriş json'umu seri hale getirdiğimde, veri modelimin enum'u doldurulmaz.Yay verisinde eNum işlenemiyor

Lütfen tavsiye edermisiniz?

public enum AccessTypeEnum {

PUBLIC(1, "public"), 
PRIVATE(2, "private"), 

private int code; 
private String accessType; 

private AccessTypeEnum(int code, String accessType) { 
    this.code = code; 
    this.accessType = accessType; 
} 

public String getAccessType() { 
    return accessType; 
} 

public int getCode() { 
    return code; 
} 

}

Benim inputJson

{ "accessType":"public" }

Hepiniz enum alanlarına ek açıklamalar "SerializedName" eklemek gerekir

AccessTypeEnum e = gson.fromJson(inputJson, AccessTypeEnum.class);

cevap

1

seriyi kaldırmak için olduğunu. ek açıklama için dokümanları buradadır: https://google.github.io/gson/apidocs/com/google/gson/annotations/SerializedName.html

Kişisel enum gibi görünecektir

import com.google.gson.annotations.SerializedName; 

public enum AccessTypeEnum {  
    @SerializedName("public") PUBLIC(1, "public"), 
    @SerializedName("private") PRIVATE(2, "private"), 

    private int code; 
    private String accessType; 

    private AccessTypeEnum(int code, String accessType) { 
     this.code = code; 
     this.accessType = accessType; 
    } 

    public String getAccessType() { return accessType; } 
    public int getCode() { return code; } 
} 

Ayrıca, enum serisini olamayacağını, şöyle kapsayıcı nesnesi kullanmak gerektiğini lütfen unutmayın:

class MyObj { 
    AccessTypeEnum accessType; 
} 

public static final void main(String args[]) { 
    MyObj obj = new Gson().fromJson("{ \"accessType\": \"public\" }", MyObj.class); 
    System.out.println("" + obj.accessType); 
} 
+0

Cevabımı kabul ederseniz çok teşekkür ederim –

+0

Takdir ederim. Cevapları kabul etmekle ilgili her şey referans için burada bulabilirsiniz: http://meta.stackexchange.com/a/5235 –