Android 将json数组键数据存储在单独的ArrayList中

Android 将json数组键数据存储在单独的ArrayList中,android,json,Android,Json,我有从url返回的json数据,如中所示 基本上,数据中有日期,在这些日期中还有5种不同的内容,即session_from、session_to、rate、bookingFound和promotion。我想要的是将所有这些日期数据存储在单独的arraylist中 例如: sessionfrom0包含2018年9月9日及其所有对象的数据 sessionfrom1包含2018年9月10日及其所有对象的数据 sessionfrom2包含2018年9月11日及其所有对象的数据 我已经尝试了下面的一段代码

我有从url返回的json数据,如中所示 基本上,数据中有日期,在这些日期中还有5种不同的内容,即session_from、session_to、rate、bookingFound和promotion。我想要的是将所有这些日期数据存储在单独的arraylist中

例如:

sessionfrom0包含2018年9月9日及其所有对象的数据

sessionfrom1包含2018年9月10日及其所有对象的数据

sessionfrom2包含2018年9月11日及其所有对象的数据

我已经尝试了下面的一段代码,但它不能正常工作

JSONObject jsonObject = new JSONObject(response);
JSONObject dataObj = jsonObject.getJSONObject("data");
Iterator<String> iter = dataObj.keys();

    sessionsfrom0 = new ArrayList<String>();
    sessionsfrom1 = new ArrayList<String>();
    sessionsfrom2 = new ArrayList<String>();
        while (iter.hasNext()) {
            key = iter.next();
            JSONArray datesArray = dataObj.getJSONArray(key);

            for (int i = 0; i < datesArray.length(); i++) {
                 JSONObject datesObject0 = datesArray.getJSONObject(i);
                 JSONObject datesObject1 = datesArray.getJSONObject(i);
                 JSONObject datesObject2 = datesArray.getJSONObject(i);

                 sessionsfrom0.add(datesObject0.getString("session_from") + " - " +datesObject0.getString("session_to");
                 sessionsfrom1.add(datesObject1.getString("session_from") + " - " +datesObject1.getString("session_to");
                 sessionsfrom2.add(datesObject2.getString("session_from") + " - " +datesObject2.getString("session_to");
                  } }
JSONObject JSONObject=新的JSONObject(响应);
JSONObject dataObj=JSONObject.getJSONObject(“数据”);
迭代器iter=dataObj.keys();
sessionsfrom0=newarraylist();
sessionsfrom1=newarraylist();
sessionsfrom2=newarraylist();
while(iter.hasNext()){
key=iter.next();
JSONArray datesArray=dataObj.getJSONArray(key);
对于(int i=0;i
这段代码工作不正常,正如您所看到的,日期09-09-2018包含大小为4的进一步数组,并且在这些数组中,每个jjson对象中还有5个项目,因此我想将所有这些存储在第一个arraylist中,即sessionfrom0,然后转到下一个日期,选择其所有数组和json对象,并将数据存储在sessionfrom1 arrayli中等等。

试试这个:

JSONObject jsonObject = new JSONObject(response);
JSONObject dataObj = jsonObject.getJSONObject("data");
Iterator<String> iter = dataObj.keys();

sessionsfrom0 = new ArrayList<String>();
sessionsfrom1 = new ArrayList<String>();
sessionsfrom2 = new ArrayList<String>();
    while (iter.hasNext()) {
        String key = iter.next();
        JSONArray datesArray = dataObj.getJSONArray(key);

        switch (key) {
           case "2018-09-09":
              fillSessions(datesArray, sessionsfrom0);
              break;

           case "2018-10-09":
              fillSessions(datesArray, sessionsfrom1);
              break;
           ....so on....
        }
    }
JSONObject jsonObject = new JSONObject(response);
JSONObject dataObj = jsonObject.getJSONObject("data");
Iterator<String> iter = dataObj.keys();

Map<String, ArrayList<String>> map = new TreeMap<>();
while (iter.hasNext()) {
    String key = iter.next();
    JSONArray datesArray = dataObj.getJSONArray(key);
    ArrayList<String> tmp = new ArrayList<>();
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject datesObject = jsonArray.getJSONObject(i);
        tmp.add(datesObject.getString("session_from") + " - "+datesObject.getString("session_to"));
    }
    map.put(key, tmp);
}
JSONObject JSONObject=新的JSONObject(响应);
JSONObject dataObj=JSONObject.getJSONObject(“数据”);
迭代器iter=dataObj.keys();
sessionsfrom0=newarraylist();
sessionsfrom1=newarraylist();
sessionsfrom2=newarraylist();
while(iter.hasNext()){
String key=iter.next();
JSONArray datesArray=dataObj.getJSONArray(key);
开关(钥匙){
案例“2018-09-09”:
fillSessions(datesArray,sessionsfrom0);
打破
案例“2018-10-09”:
填充会话(datesArray,sessionsfrom1);
打破
……等等。。。。
}
}
您可以创建函数,而不是在每种情况下重写for循环逻辑:

void fillSessions(JSONArray jsonArray, List<String> sessionList) {
   for (int i = 0; i < jsonArray.length(); i++) {
      JSONObject datesObject = jsonArray.getJSONObject(i);

      sessionList.add(datesObject.getString("session_from") + " - " +datesObject0.getString("session_to");
   }
}
void fillSessions(JSONArray JSONArray,List sessionList){
for(int i=0;i
试试这个:

JSONObject jsonObject = new JSONObject(response);
JSONObject dataObj = jsonObject.getJSONObject("data");
Iterator<String> iter = dataObj.keys();

sessionsfrom0 = new ArrayList<String>();
sessionsfrom1 = new ArrayList<String>();
sessionsfrom2 = new ArrayList<String>();
    while (iter.hasNext()) {
        String key = iter.next();
        JSONArray datesArray = dataObj.getJSONArray(key);

        switch (key) {
           case "2018-09-09":
              fillSessions(datesArray, sessionsfrom0);
              break;

           case "2018-10-09":
              fillSessions(datesArray, sessionsfrom1);
              break;
           ....so on....
        }
    }
JSONObject jsonObject = new JSONObject(response);
JSONObject dataObj = jsonObject.getJSONObject("data");
Iterator<String> iter = dataObj.keys();

Map<String, ArrayList<String>> map = new TreeMap<>();
while (iter.hasNext()) {
    String key = iter.next();
    JSONArray datesArray = dataObj.getJSONArray(key);
    ArrayList<String> tmp = new ArrayList<>();
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject datesObject = jsonArray.getJSONObject(i);
        tmp.add(datesObject.getString("session_from") + " - "+datesObject.getString("session_to"));
    }
    map.put(key, tmp);
}
JSONObject JSONObject=新的JSONObject(响应);
JSONObject dataObj=JSONObject.getJSONObject(“数据”);
迭代器iter=dataObj.keys();
sessionsfrom0=newarraylist();
sessionsfrom1=newarraylist();
sessionsfrom2=newarraylist();
while(iter.hasNext()){
String key=iter.next();
JSONArray datesArray=dataObj.getJSONArray(key);
开关(钥匙){
案例“2018-09-09”:
fillSessions(datesArray,sessionsfrom0);
打破
案例“2018-10-09”:
填充会话(datesArray,sessionsfrom1);
打破
……等等。。。。
}
}
您可以创建函数,而不是在每种情况下重写for循环逻辑:

void fillSessions(JSONArray jsonArray, List<String> sessionList) {
   for (int i = 0; i < jsonArray.length(); i++) {
      JSONObject datesObject = jsonArray.getJSONObject(i);

      sessionList.add(datesObject.getString("session_from") + " - " +datesObject0.getString("session_to");
   }
}
void fillSessions(JSONArray JSONArray,List sessionList){
for(int i=0;i
您可以使用
HashMap

JSONObject jsonObject = new JSONObject(response);
    JSONObject dataObj = jsonObject.getJSONObject("data");
    Iterator<String> iter = dataObj.keys();

    HashMap<String, ArrayList<String>> map = new HashMap<>();

    while (iter.hasNext()) {
        key = iter.next();

        JSONArray datesArray = dataObj.getJSONArray(key);
        ArrayList<String> list = new ArrayList<>();

        for (int i = 0; i < datesArray.length(); i++) {
            JSONObject datesObject0 = datesArray.getJSONObject(i);

            list.add(datesObject0.getString("session_from") + " - " + datesObject0.getString("session_to");
        }
        map.put(key, list);
        }
JSONObject JSONObject=新的JSONObject(响应);
JSONObject dataObj=JSONObject.getJSONObject(“数据”);
迭代器iter=dataObj.keys();
HashMap=newHashMap();
while(iter.hasNext()){
key=iter.next();
JSONArray datesArray=dataObj.getJSONArray(key);
ArrayList=新建ArrayList();
对于(int i=0;i
您可以使用
HashMap

JSONObject jsonObject = new JSONObject(response);
    JSONObject dataObj = jsonObject.getJSONObject("data");
    Iterator<String> iter = dataObj.keys();

    HashMap<String, ArrayList<String>> map = new HashMap<>();

    while (iter.hasNext()) {
        key = iter.next();

        JSONArray datesArray = dataObj.getJSONArray(key);
        ArrayList<String> list = new ArrayList<>();

        for (int i = 0; i < datesArray.length(); i++) {
            JSONObject datesObject0 = datesArray.getJSONObject(i);

            list.add(datesObject0.getString("session_from") + " - " + datesObject0.getString("session_to");
        }
        map.put(key, list);
        }
JSONObject JSONObject=新的JSONObject(响应);
JSONObject dataObj=JSONObject.getJSONObject(“数据”);
迭代器iter=dataObj.keys();
HashMap=newHashMap();
while(iter.hasNext()){
key=iter.next();
JSONArray datesArray=dataObj.getJSONArray(key);
ArrayList=新建ArrayList();
对于(int i=0;i
试试这个:

JSONObject jsonObject = new JSONObject(response);
JSONObject dataObj = jsonObject.getJSONObject("data");
Iterator<String> iter = dataObj.keys();

sessionsfrom0 = new ArrayList<String>();
sessionsfrom1 = new ArrayList<String>();
sessionsfrom2 = new ArrayList<String>();
    while (iter.hasNext()) {
        String key = iter.next();
        JSONArray datesArray = dataObj.getJSONArray(key);

        switch (key) {
           case "2018-09-09":
              fillSessions(datesArray, sessionsfrom0);
              break;

           case "2018-10-09":
              fillSessions(datesArray, sessionsfrom1);
              break;
           ....so on....
        }
    }
JSONObject jsonObject = new JSONObject(response);
JSONObject dataObj = jsonObject.getJSONObject("data");
Iterator<String> iter = dataObj.keys();

Map<String, ArrayList<String>> map = new TreeMap<>();
while (iter.hasNext()) {
    String key = iter.next();
    JSONArray datesArray = dataObj.getJSONArray(key);
    ArrayList<String> tmp = new ArrayList<>();
    for (int i = 0; i < jsonArray.length(); i++) {
        JSONObject datesObject = jsonArray.getJSONObject(i);
        tmp.add(datesObject.getString("session_from") + " - "+datesObject.getString("session_to"));
    }
    map.put(key, tmp);
}
JSONObject JSONObject=新的JSONObject(响应);
JSONObject dataObj=JSONObject.getJSONObject(“数据”);
迭代器iter=dataObj.keys();
Map Map=newtreemap();
while(iter.hasNext()){
String key=iter.next();
JSONArray datesArray=dataObj.getJSONArray(key);
ArrayList tmp=新的ArrayList();
for(int i=0;i