【问题标题】:Proper way to map complex JSON as a Java object with Retrofit and GSON使用 Retrofit 和 GSON 将复杂 JSON 映射为 Java 对象的正确方法
【发布时间】:2017-01-13 07:03:43
【问题描述】:

如果我从 REST API 获取的 JSON 对象具有以下结构:

{

"IsError":false,

"Result":{ "key1":"value", "key2":"value", ... }

}

应该组合两个不同的 Java 类(IsError 和 Result)还是只包含两者,作为调用中的预期对象?

2016 年 10 月 6 日更新:

要求正确使用 Retrofit2 in a new question

【问题讨论】:

  • 好吧,只要使用这个网站并找出答案。 jsonschema2pojo.org
  • 谢谢@cricket_007 我做了并建议每次调用创建两个两个对象,一个用于响应,一个用于结果。我只想有一个 Response 对象和几个 Result 对象。有什么建议吗?
  • 我不确定你的意思。也许您可以接受给出的答案并在另一篇文章中提问?
  • 知道了,发布了一个关于这个的新问题。

标签: java android generics gson retrofit2


【解决方案1】:

如果您的所有服务都将使用该结构进行响应,那么我将实现一个包含IsErrorResult 的通用类:

public class Response<T> {
    private boolean IsError;
    private T Result;

    // getters
}

然后对于每个服务,您必须使用相应的类,例如Response&lt;MyClass1&gt;Response&lt;MyClass2&gt; 等作为Call&lt;&gt; 中的预期对象。

【讨论】:

  • 谢谢你的回答@Fernandespr,要清楚,然后 MyClass1、MyClass2 等会扩展 Response 并将通用 T 结果覆盖到特定结构的对象,对吧?
  • 其实你应该这样使用它:Call&lt;Response&lt;MyClass1&gt;&gt;Call&lt;Response&lt;MyClass2&gt;&gt;
  • 嗨@fernandospr 我已经添加了关于这个问题的更多细节。你怎么看?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-03-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-10
  • 1970-01-01
相关资源
最近更新 更多