2012-09-22 69 views
0

我是Android平台的新手,我想通过JSON解析器从PHP Web服务获取值。但我没有收到数据,而是错误:No value for data25 ,data26 and data27如何从php webservice获取JSON数据:“数据无值”错误

我明白任何帮助解决这个问题。

try{ 
      JSONArray jArray = new JSONArray(result); 
      for(int i=0;i<jArray.length();i++) 
      { 
      HashMap<String, String> map = new HashMap<String, String>(); 

       JSONObject json_data = jArray.getJSONObject(i); 

      map.put("data25", "date25:" + json_data.getString("data25")); 
      map.put("data26", "data26:" + json_data.getString("data26")); 
      map.put("data27", "data27:" + json_data.getString("data27")); 

      mylist.add(map); 

      } 

的JSON结果如下:

[ 
{ 
    "data1": "5794", 
    "data2": "2922", 
    "data3": "6799", 
    "data4": "2729", 
    "data5": "9860", 
    "data6": "4486", 
    "data7": "9903", 
    "data8": "0113", 
    "data9": "9936", 
    "data10": "5470", 
    "data11": "7423", 
    "data12": "1237", 
    "data13": "6564", 
    "data14": "1261", 
    "data15": "4730", 
    "data16": "7714", 
    "data17": "2410", 
    "data18": "7486", 
    "data19": "7046", 
    "data20": "8263", 
    "data21": "4305", 
    "data22": "6244", 
    "data23": "2495", 
    "data24": " 19\/09\/2012(Wed)" 
}, 
{ 
    "data1": "555", 
    "data2": "039", 
    "data3": "353", 
    "data4": "1438", 
    "data5": "8720", 
    "data6": "7490", 
    "data7": "1294", 
    "data8": "4000", 
    "data9": "6017", 
    "data10": "2294", 
    "data11": "4042", 
    "data12": "0064", 
    "data13": "8441", 
    "data14": "1252", 
    "data15": "9609", 
    "data16": "0797", 
    "data17": "1680", 
    "data18": "0917", 
    "data19": "7492", 
    "data20": "9488", 
    "data21": "3253", 
    "data22": "7915", 
    "data23": "1071", 
    "data24": " 19\/09\/2012(Wed)", 
    //--heredata25, 
    data26, 
    data27----------"data25": "9555", 
    "data26": "3039", 
    "data27": "6353" 
}, 
{ 
    "data1": "0395", 
    "data2": "5928", 
    "data3": "8998", 
    "data4": "6447", 
    "data5": "1827", 
    "data6": "8131", 
    "data7": "7454", 
    "data8": "4647", 
    "data9": "1892", 
    "data10": "3656", 
    "data11": "1989", 
    "data12": "9095", 
    "data13": "6826", 
    "data14": "1860", 
    "data15": "9766", 
    "data16": "6069", 
    "data17": "6050", 
    "data18": "6526", 
    "data19": "8392", 
    "data20": "0520", 
    "data21": "7540", 
    "data22": "3608", 
    "data23": "7430", 
    "data24": " 19\/09\/2012(Wed)" 
}, 

回答

1

按照您发布的响应,这是一个JSONObjects的JSONArray。每个JSONObject都包含具有诸如data1,data2 ... etch之类的键的值。但是每个JSONObject都不包含关键字data25,data26,data27。如果你不想抛出例外,甚至响应不包含data25,data26,在每一个的JSONObject data27键,那么你需要修改类似下面的代码:

 JSONArray jArray = new JSONArray(result); 
     for(int i=0;i<jArray.length();i++) 
     { 
     HashMap<String, String> map = new HashMap<String, String>(); 

      // getJSONObject() will throw exception if the key is not found in the jsonObject. Instead of it use optJSONObject() to get the values from JSONObject. It returns the value if contains otherwise returns the empty jsonObject. 
      // JSONObject json_data = jArray.getJSONObject(i); 
      JSONObject json_data = jArray.optJSONObject(i); 


     //map.put("data25", "date25:" + json_data.getString("data25")); 
     map.put("data25", "date25:" + json_data.optString("data25")); // returns empty string on not finding the key in JSONObject. 

     //map.put("data26", "data26:" + json_data.getString("data26")); 
     //map.put("data27", "data27:" + json_data.getString("data27")); 

     mylist.add(map); 

     } 
+0

不错亲爱的....谢谢求助.. – vabhavsingh

+0

不客气.. !! – knvarma