3

私はこのような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

4

3 に答える 3

1

問題は、ユーザーのjson文字列が適切な形式になっていないことだと思います。json文字列を次の形式でフォーマットしてみてください。

{ 
    jsonObjectName: 
    [ 
          { 
             "campaignName":"2012 Q1", 
             "id":1,
             "source":"Added by subject",
             "status":"Draft",
             "subject":"Test Subject1"
          } 
    ] 
}
于 2012-10-08T16:00:36.330 に答える
0

あなたのjson文字列で;
「id」の値は整数として定義されており、それを文字列に解析しようとしています。それ
が例外の根本的な原因だと思います...

Todo クラスでは、次のように定義されています。

@SerializedName("id")
private String id;

しかし、json文字列では次のように定義されています。

"id":1

それを修正するには、クラスのフィールドを更新して

@SerializedName("id")
private Integer id;

またはあなたのjson文字列で

"id":"1"

お役に立てれば。

于 2012-10-08T16:07:39.457 に答える
0

まず、この質問にご協力いただきありがとうございます。解決策は私のパーサーに関するものでした。つまり、次のコードを変更したということです。

        JSONTokener jsonTokener = new JSONTokener(sb.toString());
        JSONArray rootArray = (JSONArray) jsonTokener.nextValue();
        rootArray.toString();
于 2012-10-09T07:23:41.653 に答える