Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
214 views
in Technique[技术] by (71.8m points)

json - Android parse JSONObjects inside JSONObject

How can I parse this JSON file correctly in Android?

I need all the objects from lets say tower 1 (there can be different amounts of weekdays in there) and also different amount of time frames in those weekdays.

I've successfully used a static method like

JSONObject jArray = ja.getJSONObject("towers").getJSONObject("tower1") .getJSONObject("tuesday").getJSONObject("11:45-12:20");

And then I got the value for value1 using the getString() method.

but they need to be dynamic since there are many possibilities.

{
"towers": {
"tower 1": {
  "tuesday": {
    "07:30-11:30": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "11:45-12:20": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    }
  }
},
"tower 2": {
  "wednesday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "12:45-15:10": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "15:30-17:05": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    }
  },
  "tuesday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "12:45-15:10": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    },
    "14:25-17:05": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3"
    }
  }
}
},
"building": {
"building 1": {
  "monday": {
    "07:15-12:20": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "tuesday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "wednesday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "friday": {
    "07:15-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  }
},
"building 2": {
  "saturday": {
    "08:05-11:00": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  }
},
"building 3": {
  "monday": {
    "12:45-15:10": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "tuesday": {
    "08:55-11:35": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    },
    "15:30-17:55": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  },
  "thursday": {
    "07:15-09:40": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    },
    "10:00-12:25": {
      "value1": "test value 1",
      "value2": "test value 2",
      "value3": "test value 3",
      "value4": "test value 4"
    }
  }
}
}
}
See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

if your json string keys are dynamic then you can parse it as:

JSONObject root = new JSONObject(yourString);
// get towers JSONObject
JSONObject towers = root.getJSONObject("towers"); 
// get all Towers name from towers JSONObject 

JSONArray alltowerslist=towers.names();

for(int i=0;i<alltowerslist.length();i++){
   // get sub towers from towers
   JSONObject sub_towers = towers.getJSONObject(alltowerslist.optString(i)); 
   // get days list from sub_towers
    JSONArray alldayslist=sub_towers.names();
    for(int j=0;j<alldayslist.length();j++){
       // get days from  sub_towers
        JSONObject days_json = sub_towers.getJSONObject(alldayslist.optString(j)); 

         // get time json JSONObject from days_json
        JSONArray alltimeslist=days_json.names();
        for(int k=0;k<days_json.length();k++){
       // get time from  sub_towers
        JSONObject time_json = days_json.getJSONObject(alltimeslist.optString(k));

        // now get all value1 from time_json
        JSONArray allvalelist=time_json.names();
        for(int l=0;l<time_json.length();l++){
           String str_value = time_json.optString(allvalelist.optString(l));
          }   
        }
    }
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...