2013-10-09 3 views
0

어떻게 arraylist에서 -bnumber 및 -cnumber에 해당하는 모든 데이터를 저장할 수 있습니까?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 요소 만 저장합니다. 대신 당신이 -cnumber,VERS 또는 다른 값을 추출하기위한 JSONArray로 변환 할 수 있습니다 JSON 문자열에서 CHAPTER을 얻기를 위해 String.replaceAllString.substring을 사용

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 배열을 얻은 경우 어떻게됩니까? @Nikita – Riser

+0

나는 첫 번째 성경 책에만 -cnumber를 사용합니다. JSON String에서 CHAPTER를 얻기 위해'String.replaceAll'과'String.substring'을 사용하는 대신에, 첫 번째 성경 북 챕터 – Dimitri

+0

에 나열된 데이터를 그대로 두었습니다.'-cnumber, VERS '를 추출하기 위해 JSONArray로 변환 할 수 있습니다. 또는 다른 값 –

답변

2

.

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