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