2012-05-03 97 views
0

我有一个问题解析这个JSON:字符串转换为JSONObject的

{ 
    "850": { 
    "display-name": "Volvo 850", 
    "name-parts": { 
     "make": "volvo", 
     "model": "850" 
    }, 
    "image": "http://images.thecarconnection.com/tmb/1997-volvo-850-lp_100026906_t.gif", 
    "url": "http://www.thecarconnection.com/cars/volvo_850" 
    }, 
    "960": { 
    "display-name": "Volvo 960", 
    "name-parts": { 
     "make": "volvo", 
     "model": "960" 
    }, 
    "image": "http://images.thecarconnection.com/tmb/1997-volvo-960_100026908_t.gif", 
    "url": "http://www.thecarconnection.com/cars/volvo_960" 
    }, 
    "c30": { 
    "display-name": "Volvo C30", 
    "name-parts": { 
     "make": "volvo", 
     "model": "c30" 
    }, 
    "image": "http://images.thecarconnection.com/tmb/2012-volvo-c30-2-door-coupe-auto-angular-front-exterior-view_100358956_t.gif", 
    "url": "http://www.thecarconnection.com/cars/volvo_c30" 
    }, 
    "c70": { 
    "display-name": "Volvo C70", 
    "name-parts": { 
     "make": "volvo", 
     "model": "c70" 
    }, 
    "image": "http://images.thecarconnection.com/tmb/2012-volvo-c70_100369317_t.gif", 
    "url": "http://www.thecarconnection.com/cars/volvo_c70" 
    }, 
    "s40": { 
    "display-name": "Volvo S40", 
    "name-parts": { 
     "make": "volvo", 
     "model": "s40" 
    }, 
    "image": "http://images.thecarconnection.com/tmb/2011-volvo-s40-4-door-sedan-angular-front-exterior-view_100329062_t.gif", 
    "url": "http://www.thecarconnection.com/cars/volvo_s40" 
    } 
} 

我解析同样是这样的:

try{ 
      JSONObject jsonObj = new JSONObject(jsonString); 

      System.out.println(jsonObj.length()); 
      JSONArray objNames = jsonObj.names(); 
      for(int i=0;i<objNames.length();i++) 
      { 
       System.out.println("The Name:=========="+objNames.getString(i)); 
      } 
      if(jsonObj.length()>0){ 

        for (int index = 0; index < jsonObj.length(); index++) { 
         JSONObject jsonName = (JSONObject) objNames.get(index); 
         System.out.println("The display name:"+jsonName.getString((String) objNames.get(index))); 
         System.out.println("The Image:"+jsonName.getString("image")); 
         System.out.println("The URL:"+jsonName.getString("url")); 

      } 
      } 


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

但它返回一个错误:

05-04 01:59:54.737: W/System.err(3850): org.json.JSONException: Value tl at 0 of type java.lang.String cannot be converted to JSONObject 
05-04 01:59:54.737: W/System.err(3850):  at org.json.JSON.typeMismatch(JSON.java:96) 
05-04 01:59:54.737: W/System.err(3850):  at org.json.JSONArray.getJSONObject(JSONArray.java:484) 
05-04 01:59:54.747: W/System.err(3850):  at com.TCC.android.parse.JsonParse.parseBrands(JsonParse.java:30) 
05-04 01:59:54.747: W/System.err(3850):  at com.TCC.android.ResearchList$2$2.run(ResearchList.java:167) 

我想解决这个问题,但每次都失败了,我可以每次都得到Json对象并解析它的值,但它也是如此当对象增加到100以上时,需要一个长时间的任务。我需要一个系统而有效的方法来做到这一点。请给我建议任何解决方案。

回答

0

你的问题是你得到一个字符串数组作为你的名字,但是然后试图从相同的数组中拉出JSONObjects。该数组只包含字符串,如堆栈跟踪所证明的那样。你需要迭代你的名字列表和你从objNames数组中得到的每个名字,做一个jsonObj.get(name)并且将它转换为JSONObject

+1

Thanx,It works !!!!!!!! –

+0

@SandatPandey很高兴听到它! – MattC

相关问题