测试json对象的数量

时间:2015-02-03 17:58:59

标签: android json

我做了这个,但我想改变while循环来做 - 虽然它不如最大的JsonObjet,例如,如果我有2个Json对象,我想做两次循环:

String ajout1 = "my adress";
        JSONObject json = null;
        String str = "";
        HttpResponse response;
        HttpClient myClient = new DefaultHttpClient();
        HttpPost myConnection = new HttpPost(ajout1);
        try {
            response = myClient.execute(myConnection);
            str = EntityUtils.toString(response.getEntity(), "UTF-8");
        } catch (ClientProtocolException e) {
            e.printStackTrace();
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {

            json = new JSONObject(str);
            String module = json.getJSONObject("1").getString("id_module");
            String address = json.getJSONObject("1").getString("adresse_mac");
            String mdp = json.getJSONObject("1").getString("mot_de_passe");
            String nom = json.getJSONObject("1").getString("name");

            String module2 = json.getJSONObject("2").getString("id_module");  //from 2nd object
            db.execSQL("INSERT INTO test21 (mac,mdp,obj,puce) VALUES('"+address+"','"+mdp+"','"+nom+"','"+module+"');");




        } catch (JSONException e) {
            e.printStackTrace();
        }
    }

我的Json看起来像这样:

{
"1": {
    "id_module": "f83d6101cc",
    "adresse_mac": "00:6A:8E:16:C6:26",
    "mot_de_passe": "mp0001",
    "name": "a"
 },
"2": {
    "id_module": "64eae5403b",
    "adresse_mac": "00:6A:8E:16:C6:26",
    "mot_de_passe": "mp0002",
    "name": "a"
 }
}

3 个答案:

答案 0 :(得分:0)

使用以下方法解析

 try {

       json = new JSONObject(str);
       Iterator<String> it=json.keys();
       while(it.hasNext()){
          String key=it.next();// 'key' contains values like 1 ,2 etc..
          JSONObject element=json.getJSONObject("key");
          //Perform your parsing...
        }


    } catch (JSONException e) {
        e.printStackTrace();
    }

另外(如您所示)使用JSONArray的更好想法。

答案 1 :(得分:0)

您可以调用JSONObject的keys()方法,该方法使用对象中包含的键检索字符串的迭代器。

你只需添加这样的一段时间:

Iterator<String> iterator = json.keys();
while(iterator.hasNext()){
    String key = iterator.next();
    JSONObject jsonObject = json.getJSONObject(key);
    //All you other code
    }

答案 2 :(得分:0)

我想这样的事情会发生:

JSONArray getInfo = yourJsonObject.getJSONArray();

然后循环使用这样的东西     while(i&lt; getInfo.length()){         //在这里做点什么     }

然后会遍历许多你有的JSONObject