我做了这个,但我想改变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"
}
}
答案 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