2014-03-25 41 views
2

我想解析一个json文件,我有我的原始文件夹,但似乎我有一个问题,我无法检测到是什么原因导致它。 这里是我尝试分析JSON:对于JsonArray任务没有价值 - Android

{ 
    "data":{ 
     "mainScreen":[ 
         {"id":"1","name":"I fantasmi del\rprincipe","count":"3","type":"big","image":"EventImage1.png","smallCont":"Alla scoperta della vita segreta del Machiavelli ...","addi_info":{ 

           "image":"image_ev1.png", 
           "content":"Un percorso alla scoperta di Niccolò Machiavelli, grande protagonista della vita politica, civile e artistica del Rinascimento italiano, attraverso i luoghi della sua vicenda pubblica e privata.", 
           "red_lable":"500 anni, una storia attuale.", 
         "tasks":[{"id":"1","title":"Faccia a faccia con machiavelli","subtitle":"I fantasmi de Niccolo","head":"\"Guardando verso Firenze: i tormenti di Niccolò\"","image":"bTappa1.png","imageLock":"tapa6Block.png","imageUnlock":"tapa6Pass.png","lock":"0","latitude":"47.020871","longitude":"28.721327","song":""}, 

           {"id":"2","title":"Il galateo del principe","subtitle":"I fantasmi de Niccolo","head":"\"Guardando verso Firenze: i tormenti di Niccolò\"","image":"bTappa2.png","imageLock":"tapa6Block.png","imageUnlock":"tapa6Pass.png","lock":"1","latitude":"47.010871","longitude":"28.721327","song":"01De"}, 

             {"id":"3","title":"La vicenda dell’esilio","subtitle":"I fantasmi de Niccolo","head":"\"Guardando verso Firenze: i tormenti di Niccolò\"","image":"bTappa3.png","imageLock":"tapa6Block.png","imageUnlock":"tapa6Pass.png","lock":"1","latitude":"47.020871","longitude":"28.731327","song":"01De"}, 

             {"id":"4","title":"La giornata di niccolo’","subtitle":"I fantasmi de Niccolo","head":"\"Guardando verso Firenze: i tormenti di Niccolò\"","image":"bTappa4.png","imageLock":"tapa6Block.png","imageUnlock":"tapa6Pass.png","lock":"1","latitude":"47.000871","longitude":"28.701327","song":"01De"}, 

             {"id":"5","title":"A colloquio con gli antichi","subtitle":"I fantasmi de Niccolo","head":"\"Guardando verso Firenze: i tormenti di Niccolò\"","image":"bTappa5.png","imageLock":"tapa6Block.png","imageUnlock":"tapa6Pass.png","lock":"1","latitude":"47.000871","longitude":"28.731327","song":"01De"}, 

             {"id":"6","title":"I fantasmi di niccolo’","subtitle":"I fantasmi de Niccolo","head":"\"Guardando verso Firenze: i tormenti di Niccolò\"","image":"bTappa6.png","imageLock":"tapa6Block.png","imageUnlock":"tapa6Pass.png","lock":"1","latitude":"47.020871","longitude":"28.701327","song":"01De"} 



           ] 


          }} 
] 
} 
} 

这里是我的代码:

try { 
        // Get Data From Text Resource File Contains Json Data. 
        InputStream inputStream = getResources().openRawResource(
          R.raw.fulldata); 
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); 

        int ctr; 

        ctr = inputStream.read(); 
        while (ctr != -1) { 
         byteArrayOutputStream.write(ctr); 
         ctr = inputStream.read(); 
        } 
        inputStream.close(); 

        JSONObject jObject; 

        jObject = new JSONObject(byteArrayOutputStream.toString()); 

        JSONObject jObjectResult = jObject.getJSONObject("data"); 
        JSONArray jArray = jObjectResult.getJSONArray("mainScreen"); 
        myTasks = new ArrayList<Tasks>(); 
        mainObjs = new ArrayList<MainScreenObject>(); 
        for (int i = 0; i < jArray.length(); i++) { 
         JSONArray tasks = jArray.getJSONObject(i).getJSONArray(
           "tasks"); 
         Log.v("--", tasks.length() + " tasks"); 
         for (int j = 0; j < tasks.length(); j++) { 
          myTasks.add(new Tasks(tasks.getJSONObject(j) 
            .getInt("id"), tasks.getJSONObject(j) 
            .getInt("lock"), tasks.getJSONObject(j) 
            .getDouble("longitude"), tasks 
            .getJSONObject(j).getDouble("latitude"), 
            tasks.getJSONObject(j).getString("title"), 
            tasks.getJSONObject(j) 
              .getString("subtitle"), 
            tasks.getJSONObject(j).getString("head"), 
            tasks.getJSONObject(j).getString("image"), 
            tasks.getJSONObject(j).getString(
              "imageLock"), tasks 
              .getJSONObject(j).getString(
                "imageUnlock"), tasks 
              .getJSONObject(j).getString("song"))); 
         } 
         mainObjs.add(new MainScreenObject(jArray.getJSONObject(
           i).getInt("id"), jArray.getJSONObject(i) 
           .getInt("count"), jArray.getJSONObject(i) 
           .getString("name"), jArray.getJSONObject(i) 
           .getString("image"), jArray.getJSONObject(i) 
           .getString("smallCont"), jArray 
           .getJSONObject(i).getString("addi_info"), 
           myTasks)); 
         myTasks.clear(); 
        } 

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

。而错误我得到:

03-25 13:06:28.318: W/System.err(20588): org.json.JSONException: No value for tasks 
03-25 13:06:28.318: W/System.err(20588): at org.json.JSONObject.get(JSONObject.java:354) 
03-25 13:06:28.318: W/System.err(20588): at org.json.JSONObject.getJSONArray(JSONObject.java:544) 
03-25 13:06:28.318: W/System.err(20588): at com.scsp.Splash$1.run(Splash.java:64) 

任何人都有一个想法是什么造成这种情况?

回答

4

只要改变这一点。

jObject = new JSONObject(byteArrayOutputStream.toString()); 

JSONObject jObjectResult = jObject.getJSONObject("data"); 
JSONArray jArray = jObjectResult.getJSONArray("mainScreen"); 
myTasks = new ArrayList<Tasks>(); 
mainObjs = new ArrayList<MainScreenObject>(); 
for (int i = 0; i < jArray.length(); i++) { 

    JSONObject jobj = jArray.getJSONObject(i) 
    JSONObject jAddi= jobj.getJSONObject("addi_info"); 
    JSONArray tasks = jAddi.getJSONArray("tasks"); 

addi_info对象里面你任务 JSONArray。而你没有看到。你有错误。所以你没有得到。同时检查正确JSON数据见this

2

试试这个..

任务JSONArray里面addi_infoJSONObject这就是你已经错过了

for (int i = 0; i < jArray.length(); i++) { 
     JSONObject obj = jArray.getJSONObject(i) 
     JSONObject jObsult = obj.getJSONObject("addi_info"); 
     JSONArray tasks = jObsult.getJSONArray("tasks"); 
     . 
     . 
     . 
2

尝试:

​​

“{” 呈现JSON对象值和 “[” 呈现JSON数组值。