【发布时间】:2018-12-04 11:07:35
【问题描述】:
JSON 响应是:
{
"success": false,
"errorMessages": [
"You have to select a maximum load of <span style='color:red;'>0</span> Credit/Course but you have selected <span style='color:red;'>3</span> Credit/Course --- [R060]",
"You can register courses as a full study with a load limit between <span style='color:red;'>12</span> and <span style='color:red;'>18</span> Credit/Course, but you have selected <span style='color:red;'>9</span> Credit/Course --- [R062]"
],
"isConflict": 0
}
但是当isConflict == 1 的响应是:
{
"ignoreConflictValue": "W",
"isConflict": 1,
"conflict": [
{
"EXAM_DATE": "01/01/2019",
"START_TIME": "08:00 AM",
"END_TIME": "09:30 AM",
"COURSE_NAME_SL": "مقاومة مواد,تقنيات الحفر البحري",
"COURSE_NAME_PL": "STRENGTH OF MATERIALS,OFFSHORE TECHNOLOGY",
"COURSES_COUNT": "2",
"ACTIVE": "A"
}
],
"success": false
}
这个API的逻辑是:
- 当
isConflict == 1成功属性为Integer类型时,值为 1 和 0。 - 否则成功属性是
Boolean类型,其值为true和false
我的问题是如何为这种情况定义 POJO 类。
我尝试使用 @Nullable 为两者创建两个同名的字段,但 Gson 抱怨 POJO 有重复的字段。
【问题讨论】:
-
为什么会有 2 个属性代表相同的信息。另外,如果 json 中没有这样的字段,为什么还要创建一个包含 2 个同名字段的 POJO
-
我不知道,类型必须在所有情况下都相同,但我无法更改 API。
-
我的第二个问题更重要
-
您可以在 pojo 中声明泛型类型“object”的“success”变量,然后使用实例来了解它是布尔值还是整数
-
使用冲突列表,如果数据不存在,它将提供数组列表 null.. SerializedName("isConflict") 公开私有 long isConflict; SerializedName("conflict") 公开私有列表
conflict = null;