2013-10-09 37 views
0

我怎麼能存儲所有的數據對應的數字和下面的數組在列表中。過濾json文件並保存到arraylist android

{ 
     "BIBLEBOOK": [ 
      { 
       "-bnumber": "1", 
       "-bname": "Genesis", 
       "CHAPTER": [ 
        { 
         "-cnumber": "1", 
         "VERS": [ 
          { 
           "-vnumber": "1", 
           "#text": "Au commencement, Dieu créa les cieux et la terre." 
          }, 
          { 
           "-vnumber": "2", 
           "#text": "La terre était informe et vide: il y avait des ténèbres à la surface de l'abîme, et l'esprit de Dieu se mouvait au-dessus des eaux." 
          }, 
          { 
           "-vnumber": "3", 
           "#text": "Dieu dit: Que la lumière soit! Et la lumière fut." 
          } 
         ] 
        }, 
        { 
         "-cnumber": "2", 
         "VERS": [ 
          { 
           "-vnumber": "1", 
           "#text": "Ainsi furent achevés les cieux et la terre, et toute leur armée." 
          }, 
          { 
           "-vnumber": "2", 
           "#text": "Dieu acheva au septième jour son oeuvre, qu'il avait faite: et il se reposa au septième jour de toute son oeuvre, qu'il avait faite." 
          } 
         ] 
        }, 
        { 
         "-cnumber": "3", 
         "VERS": [ 
          { 
           "-vnumber": "1", 
           "#text": "Moïse faisait paître le troupeau de Jéthro, son beau-père, sacrificateur de Madian; et il mena le troupeau derrière le désert, et vint à la montagne de Dieu, à Horeb." 
          }, 
          { 
           "-vnumber": "2", 
           "#text": "L'ange de l'Eternel lui apparut dans une flamme de feu, au milieu d'un buisson. Moïse regarda; et voici, le buisson était tout en feu, et le buisson ne se consumait point." 
          }, 
          { 
           "-vnumber": "3", 
           "#text": "Moïse dit: Je veux me détourner pour voir quelle est cette grande vision, et pourquoi le buisson ne se consume point." 
          } 
         ] 
        } 
       ] 
      }, 
      { 
       "-bnumber": "2", 
       "-bname": "Exodus", 
       "CHAPTER": [ 
        { 
         "-cnumber": "1", 
         "VERS": [ 
          { 
           "-vnumber": "1", 
           "#text": "Voici les noms des fils d'Israël, venus en Egypte avec Jacob et la famille de chacun d'eux:" 
          }, 
          { 
           "-vnumber": "2", 
           "#text": "Ruben, Siméon, Lévi, Juda," 
          }, 
          { 
           "-vnumber": "3", 
           "#text": "Issacar, Zabulon, Benjamin," 
          } 
         ] 
        } 
       ] 
      } 
     ] 
    } 

這是我的工作代碼,但它仍然只存儲第一個-bnumber元素。

JSONArray jObject=new JSONArray(biblebook); 
      biblebookLength = jObject.length(); 

     /* 
     * <BIBLEBOOK bnumber="1" bname="Genesis"> 
     */ 

     for (int arr_size=0;arr_size<biblebookLength;arr_size++){ 

      JSONObject bibleList= (JSONObject) jObject.get(arr_size); 
      bnumber = bibleList.getString("-bnumber"); 
      bname = bibleList.getString("-bname"); 

      jsbnumber.SavePreferences("jsbnumber", bnumber); 
      jsbname.SavePreferences("jsbname", bname); 

      /* 
      * Load Selected Books 
      * Check if book index equals to booknumber 
      * <CHAPTER cnumber="1"> 
      */ 

      if (bnumber.equalsIgnoreCase("2")){ 

       System.out.println("uniquenumber: "+bnumber); 
       System.out.println("uniquenumber: "+bname); 

       //String chapter =biblebook.replaceAll("\\[\\{\"-bnumber\":\"1\",\"-bname\":\"Genesis\",\"CHAPTER\":","\\{").replaceAll("\\[\\[", "\\["); 
       chapter =biblebook.replaceAll("\\[\\{\"-bnumber\":\"1\",\"-bname\":\"Genesis\",\"CHAPTER\":",""); 


       //Remove first three and last two characters and concatenate result to make json object string. 
       String rep_first_two_character = chapter.substring(0, chapter.length()-1); 
       String current_string = rep_first_two_character +"]"; 

       JSONArray testArray=new JSONArray(current_string); 

       for (int count_cnumber=0;count_cnumber<testArray.length();count_cnumber++){ 

        JSONObject json_cnumber = (JSONObject) testArray.get(count_cnumber); 
        String cnumx = json_cnumber.getString("-cnumber"); 

        System.out.println("cnumx: "+chapter); 

        /* 
          <VERS vnumber="1">Au commencement, Dieu créa les cieux et la terre.</VERS> 
          <VERS vnumber="2">La terre était informe et vide: il y avait des ténèbres à la surface de l'abîme, et l'esprit de Dieu se mouvait au-dessus des eaux.</VERS> 
          <VERS vnumber="3">Dieu dit: Que la lumière soit! Et la lumière fut.</VERS> 
          <VERS vnumber="4">Dieu vit que la lumière était bonne; et Dieu sépara la lumière d'avec les ténèbres.</VERS> 
        */ 

        if (cnumx.equalsIgnoreCase("1")){ //Change with counter 

         pref_cnumber.SavePreferences("cnumber", cnumx); 
         vers = json_cnumber.getString("VERS"); 
         JSONArray jryVers=new JSONArray(vers); 
         int vers_length=jryVers.length(); 

         for (int vers=0;vers<vers_length;vers++){ 

          JSONObject objVers= (JSONObject) jryVers.get(vers); 
          vnumber = objVers.getString("-vnumber"); 
          xtext = objVers.getString("#text"); 

          PostList.add(new bible (bnumber,bname, pref_cnumber.GetPreferences("cnumber"),vnumber,xtext)); 

         } 
        } 

       } 

      } 


     } 
+0

當你從json獲取-cnumber數組時發生了什麼? @尼基塔 – Riser

+0

我得到所有 - 只有第一本聖經書的編號。當我改變 - 數量列出的數據仍然在第一本聖經書籍章節 – Dimitri

+0

,而不是使用'String.replaceAll'和'String.substring'從JSON字符串獲取章節,您可以將其轉換爲'JSONArray'來提取'-cnumber,VERS'或其他值 –

回答

2

而是採用String.replaceAllString.substring用於獲取CHAPTER從JSON字符串你可以將其轉換爲JSONArray提取-cnumber,VERS或其他值。這樣做:

for (int arr_size=0;arr_size<biblebookLength;arr_size++){ 

    JSONObject bibleList= (JSONObject) jObject.get(arr_size); 
    bnumber = bibleList.getString("-bnumber"); 
    bname = bibleList.getString("-bname"); 

    jsbnumber.SavePreferences("jsbnumber", bnumber); 
    jsbname.SavePreferences("jsbname", bname); 

    // get CHAPTER JSONArray 
     JSONArray arr_chapter=bibleList.getJSONArray("CHAPTER"); 

     for (int i=0;i<arr_chapter.length();i++){ 
     JSONObject jsonobj_chapter= arr_chapter.get(i); 

      // get -cnumber from CHAPTER object 
      String str_cnumber=jsonobj_chapter.getString("-cnumber"); 

      // get VERS JSONArray from CHAPTER JSON object 


       JSONArray arr_vers=jsonobj_chapter.getJSONArray("VERS"); 

       for (int j=0;j<arr_vers.length();j++){ 
       JSONObject jsonobj_vers= arr_vers.get(j); 

       // get -vnumber from CHAPTER object 
       String str_vnumber=jsonobj_chapter.getString("-vnumber"); 
       // get #text from CHAPTER object 
       String str_text=jsonobj_chapter.getString("#text"); 

      } 
     } 

} 
+0

謝謝你它運作良好 – Dimitri