2011-02-09 160 views
1

這是我的JSON:GSON解析安卓

{ 
    "Curs": [ 
     { 
      "ID": "AED", 
      "Name": "Dirhamul Emiratelor Arabe", 
      "Curs": "0.8503", 
      "Multiplier": "1", 
      "Data": "2011-02-09" 
     }, 
     { 
      "ID": "AUD", 
      "Name": "Dolarul australian", 
      "Curs": "3.1572", 
      "Multiplier": "1", 
      "Data": "2011-02-09" 
     } 
    ] 
} 

這是我的課:

public class Curs { 

@SerializedName("ID") 
public String id; 

@SerializedName("Name") 
public String nume; 

@SerializedName("Curs") 
public double crs; 

@SerializedName("Multiplier") 
public int mult; 

@SerializedName("Data") 
public Date data; 

public String getId() { 
    return id; 
} 
public void setId(String id) { 
    this.id = id; 
} 
public String getNume() { 
    return nume; 
} 
public void setNume(String nume) { 
    this.nume= nume; 
} 
public void setCrs(double crs) { 
    this.crs=crs; 
} 
public double getCrs(){ 
    return crs; 
} 
public void setMult(int mult) { 
    this.mult=mult; 
} 
public int getMult(){ 
    return mult; 
} 
public void setData(Date data) { 
    this.data=data; 
} 
public Date getData(){ 
    return data; 
} 

}

這是包含我的列表類:

public class CursList { 

public static List<Curs> listaCurs; 

public void setCursList(List <Curs> listaCurs) { 
    this.listaCurs = listaCurs; 
} 

public List<Curs> getCursList() { 
    return listaCurs; 
} 

}

我的分析是這樣的:

Gson gson=new Gson(); 

    CursList listaCurs=gson.fromJson(Jsonresult,CursList.class); 

當我訪問列表中我得到一個空pointer.What我做錯了什麼?

+0

NPE在哪裏出現? –

+0

當我嘗試像這樣訪問列表時發生錯誤:List listacurs = listaCurs.listaCurs; \t \t \t \t迭代器 iterator = null; \t \t iterator = listacurs.iterator(); \t \t而(iterator.hasNext()) \t \t { \t \t} –

+0

發現如果listacurs爲空(或者,如果它是你從中得到了迭代器) –

回答

1

Gson試圖將列表放入名爲「Curs」的字段中,但CursList類中沒有這樣的字段。你應該在CursList添加註釋,如:

public class CursList { 
    @SerializedName("Curs") 
    public static List<Curs> listaCurs; 

    ... 
} 
+0

我這樣做,但我並沒有固定的我的錯誤。我希望這可能是問題所在。 –

0
Gson gson=new Gson(); 
Type cursType = new TypeToken<CursList>() { }.getType(); 
CursList listaCurs=gson.fromJson(Jsonresult,cursType); 
+0

不,這沒有辦法。你有另一個想法嗎?也許我不能很好地訪問它。我喜歡這樣:List listacurs = listaCurs.listaCurs; \t \t \t \t迭代器 iterator = null; \t \t iterator = listacurs.iterator(); \t \t而(iterator.hasNext()) \t \t { \t \t} –

+0

另一個想法:添加空構造類CursList,和init有新的列表。 public CursList(){listaCurs = new List ();} – Pasha

3

找到愚蠢的問題。 Json不接受日期格式。這是問題所在。感謝所有人的幫助。

+0

啊,沒有看到。如果需要,此鏈接可能有助於編寫自定義分析器:http://sites.google.com/site/gson/gson-type-adapters-for-common-classes-1 –

+0

使用GsonBuilder時,您可以指定使用setDateFormat()方法之一的日期格式。 –