gpt4 book ai didi

java - 当JsonArray嵌套到另一个JsonArray时如何使用Retrofit2进行反序列化

转载 作者:行者123 更新时间:2023-12-02 12:16:46 25 4
gpt4 key购买 nike

这是我的 Json 数据。

[
{
"id": 280866,
"student_id": 7,
"lesson_date_id": 31476,
"recorded_time": "11:49:55",
"lecturer_id": null,
"status": 12895,
"created_at": "2017-07-31 11:49:55",
"updated_at": null,
"lesson_date": {
"id": 31476,
"lesson_id": 28,
"ldate": "2017-07-31",
"updated_by": 1,
"created_at": "2017-04-19 03:33:43",
"updated_at": null
},
"lecturer": null,
"lesson": {
"id": 28,
"semester": "2",
"module_id": "009521",
"subject_area": "IS PDA",
"catalog_number": "7COMISS",
"class_section": "T03",
"component": "TUT",
"facility": "05-04-0009",
"venue_id": 2,
"weekday": "2",
"start_time": "08:00:00",
"end_time": "12:00:00",
"meeting_pattern": "",
"created_at": "0000-00-00 00:00:00",
"updated_at": "2017-07-10 10:19:51",
"lesson_name": null,
"credit_unit": null
}
},
{
"id": 284077,
"student_id": 6,
"lesson_date_id": 31476,
"recorded_time": "00:00:24",
"lecturer_id": null,
"status": -1,
"created_at": "2017-08-01 00:00:23",
"updated_at": null,
"lesson_date": {
"id": 31476,
"lesson_id": 28,
"ldate": "2017-07-31",
"updated_by": 1,
"created_at": "2017-04-19 03:33:43",
"updated_at": null
},
"lecturer": null,
"lesson": {
"id": 28,
"semester": "2",
"module_id": "009521",
"subject_area": "IS PDA",
"catalog_number": "7COMISS",
"class_section": "T03",
"component": "TUT",
"facility": "05-04-0009",
"venue_id": 2,
"weekday": "2",
"start_time": "08:00:00",
"end_time": "12:00:00",
"meeting_pattern": "",
"created_at": "0000-00-00 00:00:00",
"updated_at": "2017-07-10 10:19:51",
"lesson_name": null,
"credit_unit": null
}
},
{
"id": 284076,
"student_id": 5,
"lesson_date_id": 31476,
"recorded_time": "00:00:24",
"lecturer_id": null,
"status": -1,
"created_at": "2017-08-01 00:00:23",
"updated_at": null,
"lesson_date": {
"id": 31476,
"lesson_id": 28,
"ldate": "2017-07-31",
"updated_by": 1,
"created_at": "2017-04-19 03:33:43",
"updated_at": null
},
"lecturer": null,
"lesson": {
"id": 28,
"semester": "2",
"module_id": "009521",
"subject_area": "IS PDA",
"catalog_number": "7COMISS",
"class_section": "T03",
"component": "TUT",
"facility": "05-04-0009",
"venue_id": 2,
"weekday": "2",
"start_time": "08:00:00",
"end_time": "12:00:00",
"meeting_pattern": "",
"created_at": "0000-00-00 00:00:00",
"updated_at": "2017-07-10 10:19:51",
"lesson_name": null,
"credit_unit": null
}
},
{
"id": 284075,
"student_id": 4,
"lesson_date_id": 31476,
"recorded_time": "00:00:24",
"lecturer_id": null,
"status": -1,
"created_at": "2017-08-01 00:00:23",
"updated_at": null,
"lesson_date": {
"id": 31476,
"lesson_id": 28,
"ldate": "2017-07-31",
"updated_by": 1,
"created_at": "2017-04-19 03:33:43",
"updated_at": null
},
"lecturer": null,
"lesson": {
"id": 28,
"semester": "2",
"module_id": "009521",
"subject_area": "IS PDA",
"catalog_number": "7COMISS",
"class_section": "T03",
"component": "TUT",
"facility": "05-04-0009",
"venue_id": 2,
"weekday": "2",
"start_time": "08:00:00",
"end_time": "12:00:00",
"meeting_pattern": "",
"created_at": "0000-00-00 00:00:00",
"updated_at": "2017-07-10 10:19:51",
"lesson_name": null,
"credit_unit": null
}
},
{
"id": 280865,
"student_id": 2,
"lesson_date_id": 31476,
"recorded_time": "11:49:55",
"lecturer_id": null,
"status": 12895,
"created_at": "2017-07-31 11:49:55",
"updated_at": null,
"lesson_date": {
"id": 31476,
"lesson_id": 28,
"ldate": "2017-07-31",
"updated_by": 1,
"created_at": "2017-04-19 03:33:43",
"updated_at": null
},
"lecturer": null,
"lesson": {
"id": 28,
"semester": "2",
"module_id": "009521",
"subject_area": "IS PDA",
"catalog_number": "7COMISS",
"class_section": "T03",
"component": "TUT",
"facility": "05-04-0009",
"venue_id": 2,
"weekday": "2",
"start_time": "08:00:00",
"end_time": "12:00:00",
"meeting_pattern": "",
"created_at": "0000-00-00 00:00:00",
"updated_at": "2017-07-10 10:19:51",
"lesson_name": null,
"credit_unit": null
}
}

]

我使用Retrofit2,当我没有将lesson_datebeacon_lesson放入我的模型中时,可以获得正确的响应。这意味着使用Retrofit2,我只能得到具体jsonArray中的JsonObject。但是,当有另一个 JsonArray lesson_datebeacon_lesson 嵌套在 JsonArray 中时。但如果我在我的模型中使用相同的方法,它将没有任何响应,甚至没有错误消息。

这是我的模型类。

public class TimetableResult {
@SerializedName("id")
@Expose
private String id;

@SerializedName("lesson_id")
@Expose
private String lesson_id;

@SerializedName("lecturer_id")
@Expose
private String lecturer_id;

@SerializedName("lesson")
@Expose
private Lesson lesson;

@SerializedName("venue")
@Expose
private Venue venue;

@SerializedName("lesson_date")
@Expose
private LessonDate lesson_date;

@SerializedName("beaconLesson")
@Expose
private LessonBeacon lessonBeacon;


public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getLesson_id() {
return lesson_id;
}

public void setLesson_id(String lesson_id) {
this.lesson_id = lesson_id;
}

public String getLecturer_id(){return lecturer_id;}

public void setLecturer_id(String lecturer_id){this.lecturer_id=lecturer_id;}

public Lesson getLesson() {
return lesson;
}

public void setLesson(Lesson lesson) {
this.lesson = lesson;
}

public LessonDate getLesson_date() {
return lesson_date;
}

public void setLesson_date(LessonDate lesson_date) {
this.lesson_date = lesson_date;
}

public Venue getVenue() {
return venue;
}

public void setVenue(Venue venue) {
this.venue = venue;
}

public LessonBeacon getLessonBeacon() {
return lessonBeacon;
}

public void setLessonBeacon(LessonBeacon lessonBeacon) {
this.lessonBeacon = lessonBeacon;
}

如果我评论模型中的lesson_date&beacon_lesson,那么它可以正常工作。并且我可以获取信息。这很奇怪。这是LessonDate模型。

public class LessonDate {
@SerializedName("id")
@Expose
private String id;

@SerializedName("lesson_id")
@Expose
private String lesson_id;

@SerializedName("ldate")
@Expose
private String ldate;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getLesson_id() {
return lesson_id;
}

public void setLesson_id(String lesson_id) {
this.lesson_id = lesson_id;
}

public String getLdate() {
return ldate;
}

public void setLdate(String ldate) {
this.ldate = ldate;
}

public String getDate()
{
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
Date startDate;
String week_day = null;
try
{
startDate = df.parse(ldate);
week_day = getWeekDay(startDate.getDay());
}
catch (Exception e)
{
e.printStackTrace();
}

return week_day;
}

private String getWeekDay(int day)
{
String strWeekDay = null;
switch (day) {
case 1:
strWeekDay = "Monday";
break;
case 2:
strWeekDay = "Tuesday";
break;
case 3:
strWeekDay = "Wednesday";
break;
case 4:
strWeekDay = "Thursday";
break;
case 5:
strWeekDay = "Friday";
break;
case 6:
strWeekDay = "Saturday";
break;
case 7:
strWeekDay = "Sunday";
break;
}

return strWeekDay;
}

}

这是 BeaconUser 模型。

public class BeaconUser {
@SerializedName("id")
@Expose
private String id;

@SerializedName("major")
@Expose
private String major;

@SerializedName("minor")
@Expose
private String minor;

public String getId() {
return id;
}

public void setId(String id) {
this.id = id;
}

public String getMajor() {
return major;
}

public void setMajor(String major) {
this.major = major;
}

public String getMinor() {
return minor;
}

public void setMinor(String minor) {
this.minor = minor;
}

}

感谢您花时间阅读我的问题。

最佳答案

即使我找不到您的嵌套 JsonArray,因为它是一个包裹多个 Json-ObjectJson-Array,您也可以使用

获取值
@GET("path/to/your/data")
List<BeaconUser> Users();

如果您嵌套了 JsonArray,那么您应该修改您的模型,如下所示:

Class MyModel {
List<MyOtherModel> data;
}

而嵌套的 JSONArray 是模型中的列表。

在您的情况下,这意味着 LessonDate 是另一个 JsonObject (对象->对象),它不是数组,它应该可以工作。请发布异常以确定是否还有其他问题。

关于java - 当JsonArray嵌套到另一个JsonArray时如何使用Retrofit2进行反序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46111050/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com