【问题标题】:Changing JSON array to to a pojo object array将 JSON 数组更改为 pojo 对象数组
【发布时间】:2017-10-22 08:11:00
【问题描述】:

我收到以下格式的 API 响应。我正在开发 Android 项目

    {
               Course: [
                  {
                    "Year": 2017,
                    "CourseTitle": "..",
                    "Quarter": "autumn",
                    },
                 {
                     "Year": 2017,
                    "CourseTitle": "..",
                    "Quarter": "autumn",
                 }

                ],

                Instructor: {

                 "name": ,
                 "address": 
                }  
   }

我的目标是获取 Course 的课程数组,并将其分配给我使用 online tool 创建的 POJO(普通的旧 java 对象)。我也在使用 GSON 库。我确实在网上找到了不同的实现,最后我使用了这个,并且我能够过滤嵌套对象“Courses”,其中包含课程的数组对象。

JsonParser parser = new JsonParser();
JsonObject element = (JsonObject)parser.parse(response);
JsonElement responseWrapper = element.getAsJsonArray("Courses");

当我使用调试器工具查看 responseWrapper 时,它当然包含一个 JSON 数组(对象)。我想将这些数据分配给我创建的“课程”POJO 类

public class Course 实现 Parcelable {

private String href;
private int year;
private String courseTitle;
private String quarter;
private String courseTitleLong;
private String curriculumAbbreviation;
private String courseNumber;

}

我添加了以下行。

Course[] courseList = gson.fromJson(responseWrapper,Course[].class);

CourseList 是一个 Course 对象数组,但是当我查看使用调试器工具得到的结果时,所有字段变量都是“null”。我该如何解决这个问题?有没有更好的方法我应该接近?整个目的是获取课程对象数组,以便我可以对其进行操作以进行显示。

【问题讨论】:

  • 问题已解决。我的问题是我正在使用自动生成的 pojo 类。如果您查看成员变量,则名称与我从 api 获得的名称不匹配。例如,在 API 上,键是“CourseTitle”,而在我的 pojo 类中,我将它作为“courseTitle”。这适用于所有成员变量。昨天,花了我一个小时左右终于睡着了,我早上醒来,我看到了问题。我学到的教训是,如果你坚持某件事,就把它放在一边或休息一下。

标签: java android gson


【解决方案1】:

尝试重命名您的字段以完全匹配 json 响应,即使是大小写也是如此。

【讨论】:

  • 感谢您的初始回复,但您编辑了您的回复。现在,你写的和我在评论中说的一样。可能是你没看。您最初的反应是使用 List
  • 哦,好吧!是的,如果您注意到我在编辑后添加了 3 种可能性。 1)列表 2)用列表创建一个对象,第三个是字段的命名。在尝试了前 2 个并意识到它没有区别后,我再次更改了它。祝你好运!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-08-10
  • 1970-01-01
  • 2021-07-02
  • 2023-03-19
  • 2020-10-23
  • 2021-07-20
  • 1970-01-01
相关资源
最近更新 更多