Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 通过嵌套json数组的循环正在向数据模型添加以前分配的值_Android_Json_Arraylist_Android Json - Fatal编程技术网

Android 通过嵌套json数组的循环正在向数据模型添加以前分配的值

Android 通过嵌套json数组的循环正在向数据模型添加以前分配的值,android,json,arraylist,android-json,Android,Json,Arraylist,Android Json,请查看此json: { "data": [ { "date": "Thursday 1, August, 2019", "time": [ { "times": "1:13PM to 1:13PM", "notice": "testing", "category": "Meeting" }, { "times": "12:00PM t

请查看此json:

{
  "data": [
    {
      "date": "Thursday 1, August, 2019",
      "time": [
        {
          "times": "1:13PM to 1:13PM",
          "notice": "testing",
          "category": "Meeting"
        },
        {
          "times": "12:00PM to 1:00PM",
          "notice": "Meeting",
          "category": "Meeting"
        }
      ]
    },
    {
      "date": "Friday 2, August, 2019",
      "time": [
        {
          "times": "3:00PM to 3:30PM",
          "notice": "Appointment",
          "category": "Meeting"
        },
        {
          "times": "12:00PM to 12:30PM",
          "notice": "Appointment",
          "category": "Meeting"
        }
      ]
    },
    {
      "date": "Monday 5, August, 2019",
      "time": [
        {
          "times": "11:00AM to 11:30AM",
          "notice": "Obj",
          "category": "Meeting"
        }
      ]
    }
  ]
}
我正在将这些json数据整理到我的ArrayList中,如下所示:

VipPojo playerModel;
try {
    JSONArray dataArray = obj.getJSONArray("data");
    for (int i = 0; i < dataArray.length(); i++) {
        JSONObject dataobj = dataArray.getJSONObject(i);
        JSONArray dataArrays1 = dataobj.getJSONArray("time");
        String date = dataobj.getString("date");
        System.out.println("date: " + date); // here I get correct data (all 3 items);
        for (int j = 0; j < dataArrays1.length(); j++) {
            playerModel = new VipPojo();
            JSONObject dataobj1 = dataArrays1.getJSONObject(j);
            playerModel.setDate(date); // this is adding same previous assigned "date" until loop ends(I get 5 data with duplicate values)
            playerModel.setTimes(dataobj1.getString("times"));
            playerModel.setNotice(dataobj1.getString("notice"));
            playerModel.setCategory(dataobj1.getString("category"));
            dataModelArrayList.add(playerModel);
        }
    }
} catch (JSONException e) {
    e.printStackTrace();
}
vippojoplayermodel;
试一试{
JSONArray dataArray=obj.getJSONArray(“数据”);
对于(int i=0;i
正如我在上面代码的注释中提到的,
“date”
对象正在向数据模型添加以前分配的值,因为
setDate()
正在内部循环中使用,我不希望这样

你能帮我做这个吗?

换衣服
playerModel.setDate(dataobj.getString(“日期”)
playerModel.setDate(日期)

使用Gson库

对于嵌套对象,请使用对象本身

有关更多信息,VipPojo中的“日期”字段不是静态的吗

VipPojo playerModel;
try {
    JSONArray dataArray = obj.getJSONArray("data");
    for (int i = 0; i < dataArray.length(); i++) {
    playerModel = new VipPojo();
        JSONObject dataobj = dataArray.getJSONObject(i);
        JSONArray dataArrays1 = dataobj.getJSONArray("time");
        String date = dataobj.getString("date");
        System.out.println("date: " + date); // here I get correct data (all 3 items);
        playerModel.setDate(date);
        for (int j = 0; j < dataArrays1.length(); j++) {

            JSONObject dataobj1 = dataArrays1.getJSONObject(j);
             // this is adding same previous assigned "date" until loop ends(I get 5 data with duplicate values)
            playerModel.setTimes(dataobj1.getString("times"));
            playerModel.setNotice(dataobj1.getString("notice"));
            playerModel.setCategory(dataobj1.getString("category"));
            dataModelArrayList.add(playerModel);
        }
    }
} catch (JSONException e) {
    e.printStackTrace();
}
vippojoplayermodel;
试一试{
JSONArray dataArray=obj.getJSONArray(“数据”);
对于(int i=0;i
我知道。它应该是
dataobj
“date”
对象应分配外部数组,如json数据所示。区别在于,模型对象仍在该循环中初始化。但是我试过了,但没有成功。我打印dataModelArrayList:for(VipPojo vp:dataModelArrayList){Log.d(“gggggg”,vp.date);}结果:2019年8月1日星期四2019年8月1日星期四2019年8月2日星期五2019年8月2日星期一2019年8月5日星期一