0

私がこれまでに行ったことは次のとおりです。この形式のjsonオブジェクトを作成しました:

{ "checklist": {
"id": "1", "name": "shoppping", "desc":"description", "is_editable":"false", "item": [ {"id":"3","value": "dfdf", "desc": "wwe"}, {"id":"3","value": "dfdf", "desc": "wwe"}, {"id":"3","value": "dfdf", "desc": "wwe"} ] } }

次のコードを使用します。

public static void sendjsontourl(String id) throws JSONException, IllegalStateException, IOException
{
 String title;
 String desc;
 String creator;
 Boolean is_editable;

 String[] itid;
 String[] itname;
 String[] itdesc;
 Boolean[] itchk;
 Integer count;

 title=DBInterface.getlistname(id);
 desc=DBInterface.getlistdesc(id);
 creator=DBInterface.getlistcreartor(id);
 is_editable=DBInterface.geteditablemode(id);     
 itid=DBInterface.getitemid(id);
 itname=DBInterface.getitemname(id);
 itdesc=DBInterface.getitemdesc(id);
 itchk=DBInterface.readdataitem(id);
 count=DBInterface.getitemcount(id);     

 JSONObject checklist = new JSONObject();
 JSONObject obj = new JSONObject();
 JSONArray item = new JSONArray();
 JSONObject reqObj = new JSONObject();   
 for(int i=0; i<count; i++)
 {

    reqObj.put( "id",""+itid[i]);
    reqObj.put( "value",""+ itname[i]);
    reqObj.put( "desc", ""+itdesc[i] );
    item.put( reqObj );
 }        
    obj.put( "item", item );
    obj.put("id",""+id);
    obj.put("name",""+title);
    obj.put("description",""+desc);
    obj.put("creator",""+creator);
    obj.put("is_editable",""+is_editable);      
    checklist.put("checklist",obj);
    Log.d("log_tag",String.valueOf(checklist));
}   

私の問題:uはjson配列を含むjsonオブジェクトを見ることができるので-アイテム..アイテムの値はすべてのアイテムで同じです...sqliteデータベースからのデータフェッチ部分は正しいです..私は何が問題なのか理解できませんそして、なぜ最後のインデックス値のみがjson配列に格納されるのですか?

4

1 に答える 1

1

reqObjにJSONObjectの同じインスタンスを使用しているため、データ編集を上書きします。

for(int i=0; i<count; i++)
 {
    JSONObject reqObj = new JSONObject();
    reqObj.put( "id",""+itid[i]);
    reqObj.put( "value",""+ itname[i]);
    reqObj.put( "desc", ""+itdesc[i] );
    item.put( reqObj );
 }      
于 2013-02-04T12:54:58.287 に答える