如何在arraylist中存储与下面的-bnumber和-cnumber相对应的所有数据。
{
"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,"
}
]
}
]
}
]
}
这是我的工作代码但仍然只存储了第一个 - 元数据元素。
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 :(得分:2)
而不是使用String.replaceAll
和String.substring
从JSON字符串中获取CHAPTER
,您可以将其转换为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");
}
}
}