我有一个像这样的json:
[{"campaignName":"2012 Q1","id":1,"source":"Added by subject","status":"Draft","subject":"Test Subject1"},{"campaignName":"2012 Q2","id":2,"source":"Added by reviewer","status":"Created","subject":"Test Subject2"},{"campaignName":"2012 Q2","id":3,"source":"Added by reviewer","status":"Created","subject":"Test Subject62"}]
我有课程:
public class Json_ToDoData {
private ArrayList<ToDo> mList;
public Json_ToDoData() {
}
public ArrayList<ToDo> getmList() {
return mList;
}
public void setmList(ArrayList<ToDo> mList) {
this.mList = mList;
}
}
和:`public class ToDo { public ToDo(){ }
@SerializedName("campaignName")
private String campaignName;
@SerializedName("id")
private String id;
@SerializedName("source")
private String source;
@SerializedName("status")
private String status;
@SerializedName("subject")
private String subject; ... gettes and settes ...}`
我总是得到一个例外:
10-08 15:17:46.600:W / System.err(2557):java.lang.ClassCastException:java.util.ArrayList 而且我不明白为什么。这是我要解析的行:
Json_ToDoData rr = new JSONDeserializer<Json_ToDoData>().deserialize(sb.toString(), Json_ToDoData.class);
请帮助我,thx
答案 0 :(得分:1)
我认为问题是用户json字符串的格式不正确。 尝试使用以下格式格式化json字符串:
{
jsonObjectName:
[
{
"campaignName":"2012 Q1",
"id":1,
"source":"Added by subject",
"status":"Draft",
"subject":"Test Subject1"
}
]
}
答案 1 :(得分:0)
;
“id”的值定义为Integer,并且您尝试将其解析为字符串,
我认为这是例外的根本原因......
@SerializedName("id")
private String id;
但在json字符串中,它被定义为;
"id":1
要解决此问题,您可以将班级中的字段更新为
@SerializedName("id")
private Integer id;
或在你的json字符串中
"id":"1"
希望这会有所帮助。
答案 2 :(得分:0)
首先,我想说谢谢你在这个问题上的合作,解决方案是关于我的解析器,我的意思是我已经更改了以下代码:
JSONTokener jsonTokener = new JSONTokener(sb.toString());
JSONArray rootArray = (JSONArray) jsonTokener.nextValue();
rootArray.toString();