GSON解析安卓
这是我的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我做错了什么?
Gson试图将列表放入名为“Curs”的字段中,但CursList类中没有这样的字段。你应该在CursList添加注释,如:
public class CursList {
@SerializedName("Curs")
public static List<Curs> listaCurs;
...
}
我这样做,但我并没有固定的我的错误。我希望这可能是问题所在。 –
Gson gson=new Gson();
Type cursType = new TypeToken<CursList>() { }.getType();
CursList listaCurs=gson.fromJson(Jsonresult,cursType);
不,这没有办法。你有另一个想法吗?也许我不能很好地访问它。我喜欢这样:List
另一个想法:添加空构造类CursList,和init有新的列表。 public CursList(){listaCurs = new List
找到愚蠢的问题。 Json不接受日期格式。这是问题所在。感谢所有人的帮助。
啊,没有看到。如果需要,此链接可能有助于编写自定义分析器:http://sites.google.com/site/gson/gson-type-adapters-for-common-classes-1 –
使用GsonBuilder时,您可以指定使用setDateFormat()方法之一的日期格式。 –
NPE在哪里出现? –
当我尝试像这样访问列表时发生错误:List listacurs = listaCurs.listaCurs; \t \t \t \t迭代器 iterator = null; \t \t iterator = listacurs.iterator(); \t \t而(iterator.hasNext()) \t \t { \t \t} –
发现如果listacurs为空(或者,如果它是你从中得到了迭代器) –