2012-07-15 85 views
0

我有一个android应用程序中的代码,它需要一个数组,其中每个元素是一个字符串,其中包含jsonObject的格式,但我想采取每个对象的值,所以使用它。问题是JsonObject不采用索引0,所以它盯着1,我从来没有看到第一个对象的值1。jsonobject不支持索引0

for(int i=0;i<a.length;i++){ 
    try { 
     JSONObject jsonn = new JSONObject(a[i]); 
     g=jsonn.getString(TAG_ID); 
     builder.append("\n"+i+"."+"id swicht: "+"\n"+g+"\n"); 
    } 
} catch (JSONException e) {//e.printStackTrace();} 
+0

你的代码看起来都搞砸了 – Musa 2012-07-15 02:56:24

+0

我认为我们需要更多的上下文。什么类型的数组是什么?它是如何被填充的? – 2012-07-15 03:14:07

+0

数组类型是字符串,起初我收到一个像这样的字符串:[{“dpid”:“00:00:00:00:00:00:0c”},{“dpid”:“00:00 :00:00:00:00:00:0D “},{” DPID “:” 00:00:00:00:00:00:00:09 “},{” DPID “:” 00:00:00 :00:00:00:00:0a“}],然后我使用split,'ca'来转换数组。这个数组是我在for循环中引用的。 – user1526357 2012-07-15 03:34:52

回答

0

根据您的意见,代码应该是:

jsonStr = jsonStr.substring(1, jsonStr.length() - 1); // (remove the "[" and "]") 
String[] a = jsonStr.split(","); 
for(int i=0;i<a.length;i++){ 
    try { 
     JSONObject jsonn = new JSONObject(a[i]); 
     g = jsonn.getString(TAG_ID); 
     builder.append("\n"+i+"."+"id swicht: "+"\n"+g+"\n"); 
    } catch (JSONException e) {//e.printStackTrace();} 
} 

如果你不这样做第一线,在数组中的第一个和最后ELEM将misformat,不能转换的JSONObject - - “[{”dpid“:”00:00:00:00:00:00:00:0c“}”不适合JSONObject格式。