2015-11-04 51 views
0

我的模型GSON解析JSON數據是這樣的:與Android

public class DefaultModel<T> { 
    public int Status; 
    public T JSON; 
    public String ErrorMessage; 
    public String InfoMessage; 
} 

JSON的字體樣式

{"ErrorMessage":"null","InfoMessage":"null","JSON": 
[{"DictId":"1","ItemCode":"1","ItemName":"sINGLE","SortNum":0," 
isChecked":true},{"ItemName":"WenJackp","SortNum":0,"isChecked":false}] 
,"Status":100} 

我想解析此JSON,但GSON拋出異常

com.google.gson.internal.LinkedTreeMap無法轉換爲 xxxxx.DictItem

如何解析?


增加更多的細節,我用這個方法解析JSON數據:

  • 創建ParameterizedType,你會看到buildType方法

    ParameterizedType mType = buildType(DefaultModel.class, ArrayList.class, DictItem.class); 
    
  • 解析JSON數據

    DefaultModel<List<DictItem>> mResult = mGson.fromJson(json, mType); 
    
  • 創造新ParameterizedType

    protected ParameterizedType buildType(final Class raw, final Type... args) { 
        return new ParameterizedType() { 
         public Type getRawType() { 
          return raw; 
         } 
    
         public Type[] getActualTypeArguments() { 
          return args; 
         } 
    
         public Type getOwnerType() { 
          return null; 
         } 
        }; 
    } 
    

以上是我處理由使用JSON解析方法,我想用Default<List<DictItem>>這種類型,T == List<DictItem>

+0

下面註解它們是一個例子http://thegeekyland.blogspot.com/2015/11/serializing-and- deserializing-json-from.html – Arlind

回答

1

對於類型 'T' 使用

List<InnerClass> json; 

然後,您可以將一個內部類放入您的DefaultModel中,該類將具有

String dictId; 
String itemCode; 
String itemName; 
String sortNum; 
boolean isChecked; 

在附註上,這些變量應該標記爲private並通過getter訪問。 你也可以有不同的變量名,如果你想用@SerializedName

@SerializedName("ErrorMessage") 
private String myErrowMsg; 
+0

謝謝你回答我的問題!你可能不知道我對這個問題的描述,後來我加入了更多的問題描述 – WenJackp