当前位置: 首页 > 知识库问答 >
问题:

如何使用Registfit将Json深入解析为gson

夏侯楷
2023-03-14
[{
    "id": 1,
    "title": "sell parm",
    "created_by": "7",
    "created_at": "2017-04-13T05:59:56.625Z",
    "updated_at": "2017-04-13T05:59:56.625Z",
    "items": [
      {
        "id": 1,
        "name": "item1",
        "done": null,
        "todo_id": 1,
        "created_at": "2017-04-13T06:31:18.136Z",
        "updated_at": "2017-04-13T06:31:18.136Z"
      }
    ]
  },
  {
    "id": 2,
    "title": "brobro",
    "created_by": "7",
    "created_at": "2017-04-13T06:02:51.855Z",
    "updated_at": "2017-04-13T06:02:51.855Z",
    "items": []
  },
  {
    "id": 3,
    "title": "brobro",
    "created_by": "7",
    "created_at": "2017-04-13T06:16:13.186Z",
    "updated_at": "2017-04-13T06:16:13.186Z",
    "items": []
  },
  {
    "id": 4,
    "title": "brsro",
    "created_by": "7",
    "created_at": "2017-04-13T06:17:14.515Z",
    "updated_at": "2017-04-13T06:17:14.515Z",
    "items": []
  }
]

有没有什么方法可以创建一个Gson的自定义转换器来提取Todo字段,所以registfit返回appipiate POJO?

对不起。我的英语不好...

共有1个答案

阚砚文
2023-03-14

@Hyungsik你可以这样做(随便问任何问题)

创建一个Retrofit2使用的接口,或者做一些类似以下的添加

public interface ApiInterface {

    // Get Your Data
    @GET("Your_API_URL")
    Call<ArrayList<Pojo>> getMyData();
}

在应用程序中创建以下两个类。

public class Pojo {

    private Integer id;
    private String title;
    private String createdBy;
    private String createdAt;
    private String updatedAt;
    private List<Item> items = null;

    public Integer getId() {
        return id;
    }

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

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getCreatedBy() {
        return createdBy;
    }

    public void setCreatedBy(String createdBy) {
        this.createdBy = createdBy;
    }

    public String getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(String createdAt) {
        this.createdAt = createdAt;
    }

    public String getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(String updatedAt) {
        this.updatedAt = updatedAt;
    }

    public List<Item> getItems() {
        return items;
    }

    public void setItems(List<Item> items) {
        this.items = items;
    }

}
class Item {

    private Integer id;
    private String name;
    private Object done;
    private Integer todoId;
    private String createdAt;
    private String updatedAt;

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Object getDone() {
        return done;
    }

    public void setDone(Object done) {
        this.done = done;
    }

    public Integer getTodoId() {
        return todoId;
    }

    public void setTodoId(Integer todoId) {
        this.todoId = todoId;
    }

    public String getCreatedAt() {
        return createdAt;
    }

    public void setCreatedAt(String createdAt) {
        this.createdAt = createdAt;
    }

    public String getUpdatedAt() {
        return updatedAt;
    }

    public void setUpdatedAt(String updatedAt) {
        this.updatedAt = updatedAt;
    }
}
 类似资料:
  • 我正在尝试将JSON转换为GSON,我不确定这是最好的结构。 所有响应都由代码、消息和数据结构组成。但数据的内部结构可能会有所不同。 这是我的回应对象

  • 我已经试过各种方法来解决这个问题了。但没有成功。 我有几节这样的课 在这种情况下,T可以是任何对象,并且应该可以在运行时解析。 Jackson真的无法将json反序列化为泛型类型吗?

  • 问题内容: 我必须在我的网站上找到一张桌子。并且必须从“” 获取此表的数据,我已经尝试了很多方法,但是没有用。 .. 问题答案: 从外部来源获取数据时,要做的第一件事就是了解所返回的内容。 也是 结果: 因此,现在您知道您要处理的是对象,而不是标量值或数组。 因此,请尝试以下代码:-

  • 问题内容: 我的样子如下: 现在,每个元素具有相同的结构(假设一个POJO称为MessageDefault.java)。那么我怎么能把所有东西都当作一个??呢? 我正在使用gson进行解析。我也不能更改JSON响应。 编辑:: MessageDefault.java 它只是一切的结构。但是在JSON中,的每个子项都有不同的名称,例如POJO MessageDefault.java中所反映的名称。但

  • 我正在使用GSON解析一个JSON文件,并希望将这个JSON对象映射到一个POJO类。问题是JSON中的属性名没有camel-case,但我的java POJO对象具有camel-case属性名。 有没有任何想法没有任何表现打击? 例如:JSON文件中的属性名是'ordernumber',但在我的POJO类中,我用'Sales Number'作为属性名,而不是ordernumber。现在,我们如何

  • 我试图将一个对象转换为json格式,但它不起作用(我得到一个奇怪的堆栈溢出异常)。它从对象到XML都能完美地工作。我有一个简单的实体类User和另一个具有多个关系的类。 相关类 我将@XmlTransient注释放在我想要忽略的getter上。 下面是我的rest服务中的一个方法,它从用户的昵称返回用户 因此,它使用@products({“application/xml”})而不是@product