2012-09-18 211 views
-1

我正在应用程序中获得JSON响应。的反应是如下:如何解析JSON响应

[ 
    { 
     "CID": 5, 
     "ChildMenus": [], 
     "Level": null, 
     "MenuUrl": "", 
     "Name": "Jewelry", 
     "PCID": 235, 
     "REnum": null, 
     "isLooseDiamond": "NO" 
    }, 
    { 
     "CID": 122, 
     "ChildMenus": [], 
     "Level": null, 
     "MenuUrl": "", 
     "Name": "Collection", 
     "PCID": 235, 
     "REnum": null, 
     "isLooseDiamond": "NO" 
    }, 
    { 
     "CID": 459, 
     "ChildMenus": [], 
     "Level": null, 
     "MenuUrl": "http://jewelry.roughdiamondxchange.in/Guide.aspx", 
     "Name": "Education", 
     "PCID": 235, 
     "REnum": null, 
     "isLooseDiamond": "NO" 
    }, 
    { 
     "CID": 483, 
     "ChildMenus": [], 
     "Level": null, 
     "MenuUrl": "", 
     "Name": "Design Your Own ", 
     "PCID": 235, 
     "REnum": null, 
     "isLooseDiamond": "NO" 
    }, 
    { 
     "CID": 486, 
     "ChildMenus": [], 
     "Level": null, 
     "MenuUrl": "http://jewelry.roughdiamondxchange.in/About.aspx", 
     "Name": "Policy", 
     "PCID": 235, 
     "REnum": null, 
     "isLooseDiamond": "NO" 
    }, 
    { 
     "CID": 56, 
     "ChildMenus": [], 
     "Level": null, 
     "MenuUrl": "", 
     "Name": "Diamonds", 
     "PCID": 235, 
     "REnum": null, 
     "isLooseDiamond": "YES" 
    }, 
    { 
     "CID": 611, 
     "ChildMenus": [], 
     "Level": null, 
     "MenuUrl": "", 
     "Name": "Overview", 
     "PCID": 235, 
     "REnum": null, 
     "isLooseDiamond": "NO" 
    } 
] 

为了解析此我用下面的代码

try { 
    // Getting Array of Contacts 
    /*JSONObject jsonObject = new JSONObject(json);*/ 
    /*JSONArray array = json.getJSONArray("Value");*/ 
    JSONArray array=new JSONArray(); 
    array.put(getJSONFromUrl()); 

    // looping through All Contacts 
    for(int i = 0; i < array.length(); i++){ 
     JSONObject c = array.getJSONObject(i); 
     /* JSONObject object = jsonObject.getJSONObject("FirstObject");*/ 
     // Storing each json item in variable 
     /*String cid = c.getString(TAG_CID);*/ 
     String name = c.getString(TAG_NAME); 
     String pcid = c.getString(TAG_PCID); 
     String menuurl = c.getString(TAG_MENUURL); 

     // Phone number is agin JSON Object 

     // creating new HashMap 
     HashMap<String, String> map = new HashMap<String, String>(); 

     // adding each child node to HashMap key => value 
     /* map.put(TAG_CID, cid);*/ 
     map.put(TAG_NAME, name); 
     map.put(TAG_PCID, pcid); 
     map.put(TAG_MENUURL, menuurl); 

     // adding HashList to ArrayList 
     menuList.add(map); 
    } 

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

它给我一个org.json.JSONException: No value for name错误。我无法解析数据。我将不胜感激关于如何解析日期的任何想法。

+0

调试。看'c'变量 – Ilya

+0

@llya:c:{“Name”:“Jewelry”,“ChildMenus”的值:[],“REnum”:null,“isLooseDiamond”:“NO”,“MenuUrl” ”, “等级”:空, “PCID”:235, “CID”:5} – sad

回答

0

检查字符串TAG_NAME =“姓名”而不是“名”

0

当您尝试访问TAG_NAME这是不是在JSONObject的会出现此错误。 检查存在TAG_NAME的由具有(TAG_NAME)返回布尔

字符串名称= c.getString(TAG_NAME);

0

我想你需要检查字符串TAG_NAME。将代码更改为以下代码后更改。希望它能帮助你。

for(int i = 0; i < array.length(); i++){ 
      JSONObject c = array.getJSONObject(i); 
      /* JSONObject object = jsonObject.getJSONObject("FirstObject");*/ 
      // Storing each json item in variable 
      /*String cid = c.getString(TAG_CID);*/ 
      String name = c.getString("Name"); 
      String pcid = c.getString("PCID"); 
      String menuurl = c.getString("MenuUrl"); 

      // Phone number is agin JSON Object 

      // creating new HashMap 
      HashMap<String, String> map = new HashMap<String, String>(); 

      // adding each child node to HashMap key => value 
      /* map.put(TAG_CID, cid);*/ 
      map.put("Name", name); 
      map.put("PCID", pcid); 
      map.put("MenuUrl", menuurl); 

      // adding HashList to ArrayList 
      menuList.add(map); 
     } 
0

试试这个

     List<String>mCid = new ArrayList<String>(); 
     List<String>mLevel = new ArrayList<String>(); 
     String value,result; 
     InputStream is,in; 
     JSONArray jArray = null; 

      try { 

        HttpClient httpclient=new DefaultHttpClient(); 
       HttpPost httppost=new HttpPost("url"); 
       //namevaluepair=new ArrayList<NameValuePair>(1); 
       //namevaluepair.add(new BasicNameValuePair("key",value));//if you want to send data to server 

       //httppost.setEntity(new UrlEncodedFormEntity(namevaluepair)); 
       HttpResponse httpresponse=httpclient.execute(httppost); 
       in=httpresponse.getEntity().getContent(); 
      //inputStream = response.getEntity().getContent(); 
      }catch(Exception e){Log.e("","error in http connection");} 

      try{ 
       BufferedReader reader = new BufferedReader(new InputStreamReader(in,"iso-8859-1"),8); 
       StringBuilder sb1 = new StringBuilder(); 
       String line = null; 
       while ((line = reader.readLine()) != null) { 
         sb1.append(line + "\n"); 
       } 
       in.close(); 
       result=sb1.toString(); 

         Toast.makeText(getBaseContext(), result, Toast.LENGTH_LONG).show(); 
         try{ 
         JSONObject json=new JSONObject(result); 

         jArray=json.getJSONArray("Array_name_in_response"); //whatever name of your array in response 
         System.out.println(jArray.length()); 

         //if(jArray.length()!=0){ 
         for(int i=0;i<jArray.length();i++) 
         { 

         value = jArray.getJSONObject(i).optString("CID"); 
         mCid.add(value); 
         value = jArray.getJSONObject(i).optString("Level"); 
         mLevel.add(value); 
         System.out.println(value); 
         } 
        // } 

        }catch(JSONException e){ 
         Log.e("log_tag", " Error parsing data "+e.toString()); 
         } 


     }catch(Exception e){ 
       Log.e("log_tag", "Error converting result "+e.toString()); 
     }