0

これを試しましたが、 for ループ optJSONObject(i) でエラーが発生しました

{
    "response": {
        "code": 1,
        "message": "success"
    },
    "data": {
        "updates": [
                    {
                        "id":"67",                  
                        "date":"6 months ago",
                        "update_type": "7",
                        "update_id": "67",
                        "name":"ravi"
                    },
                    {
                        "id":"68",                  
                        "date":"3 months ago",
                        "update_type": "5",
                        "update_id": "68",
                        "name":"paresh"
                    },

                    {
                        "id":"69",                  
                        "date":"1 months ago",
                        "update_type": "6",
                        "update_id": "69",
                        "name":"sampath"
                    },

                    {
                        "id":"62",                  
                        "date":"9 months ago",
                        "update_type": "6",
                        "update_id": "62",
                        "name":"raju"
                             }
        ]
    }
}

このために試したコードは次のとおりです。

try {
    InputStream is = null;

    is =  getApplicationContext().getResources().openRawResource(R.raw.myfile);


    //CONVERTS STREAM OBJ IN STRING OBJ
    mJSONString             =   convertStreamToString(is);
    JSONObject obj          =   new JSONObject(mJSONString);
    JSONObject dataobj      =   obj.getJSONObject("data");
    JSONObject updateobj    =   dataobj.getJSONObject("update");

    //System.out.println(new JSONObject(update)toString(2));
    for(int i=0; i<updateobj.length(); i++){

        JSONObject object       =   updateobj.optJSONObject(i);
        mUpdates                =   new Mobile_UpdateActivity();

        mUpdates.update_id      =   object.getString("update_id");
        mUpdates.site_id        =   object.getString("site_id");
        mUpdates.update_type    =   object.getString("update_type");

        System.out.println(mUpdates.update_id);
        System.out.println(mUpdates.site_id);
        System.out.println(mUpdates.update_type);
    }

}

しかし、 **optJSONObject(i) でエラーに直面しています

エラー: JSONObject 型のメソッド optJSONObject(String) は、引数 (int) には適用できません**

4

2 に答える 2

0

次の警告が表示されます:

optJSONObject(i) エラー : タイプ JSONObject のメソッド optJSONObject(String) は、引数 (int) には適用できません

現在のjson文字列updatesJSONArray代わりにJSONObjectJSONArrayをJSONObjectに変換しようとしているため、現在のJsonArrayのアイテムのインデックスを必要とするJsonObject.optJSONObject代わりに、パラメーターとして文字列を必要とするJsonObjectを呼び出しています 。JSONArray.optJSONObject現在の警告を回避するようにコードを変更します。

    //...your code here...
    JSONObject obj          =   new JSONObject(mJSONString);
    JSONObject dataobj      =   obj.getJSONObject("data");

    // get update jsonArray from dataobj JSONObject 
    JSONArray updateobj    =   dataobj.getJSONArray("update");
    //...your code here...
于 2013-03-25T09:52:44.510 に答える
0

行を置き換えてみてください:

JSONObject updateobj    =   dataobj.getJSONObject("update");

JSONArray updateobj    =   dataobj.getJSONArray("update");

そしてforループで:

JSONObject object       =   updateobj.optJSONObject(i);

JSONObject object       =   updateobj.get(i);
于 2013-03-25T09:53:15.827 に答える