2011-02-09 41 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()方法之一的日期格式。 –