java - 这是没有 get/set 的 Retrofit POJO 的正确方法吗?

标签 java android json gson retrofit

简介

我的代码运行良好。我很想知道这个方法对于这个特定的用例是否可以,因为我找不到一个使用 GSON 或其他 JSON 解析库但只是使用的 Retrofit 示例使用 POJO 来保存数据。

(注意,我已经尝试格式化我的代码有一段时间了!抱歉)

在此示例中,我从 TMDB 的 API 请求数据:.../3/movie/{id}?API_KEY=x

以 JSON 格式返回的数据(精简。请关注“评论”对象)

{
"vote_count":2034,
"reviews":{
    "page":1,
    "results":[
        {
            "id":"55660928c3a3687ad7001db1",
            "author":"Phileas Fogg",
            "content":"Fabulous action movie. Lots of interesting characters. They don't make many movies like this. The whole movie from start to finish was entertaining I'm looking forward to seeing it again. I definitely recommend seeing it.",
            "url":"http://j.mp/1HLTNzT"
        },
        {
            "id":"55732a53925141456e000639",
            "author":"Andres Gomez",
            "content":"Good action movie with a decent script for the genre. The photography is really good too but, in the end, it is quite repeating itself from beginning to end and the stormy OST is exhausting.",
            "url":"http://j.mp/1dUnvpG"
        }
    ],
    "total_pages":1,
    "total_results":2
},
"trailers":{
    "quicktime":[

    ],
    "youtube":[
        {
            "name":"Trailers From Hell",
            "size":"HD",
            "source":"FRDdRto_3SA",
            "type":"Featurette"
        },
        {
            "name":"Trailer 2",
            "size":"HD",
            "source":"jnsgdqppAYA",
            "type":"Trailer"
        },
        {
            "name":"Official Trailer #1",
            "size":"HD",
            "source":"YWNWi-ZWL3c",
            "type":"Trailer"
        }
    ]
}

方法

  1. 创建了改造界面。希望我能在这里展示它,但格式有点困惑。

  2. 这是奇怪的部分。我创建了一个 POJO,如下所示,它工作正常。

    公共(public)类 TMDBMovieDetailsRetrofitObj {

    //movie/id 端点中可用的运行时 公共(public)字符串运行时;

    公共(public)字符串标语;

    公开评论评论;

    公开课评论{

    public Reviews() { reviews = new Reviews(); }
    
    // To know how many reviews we have got!
    public String total_results;
    
    public List<ReviewResults> results;
    
    public class ReviewResults{
    
        public ReviewResults() {
            results = new ArrayList<>();
        }
    
        public String id;
        public String author;
        public String content;
        public String url;
    }
    

    } }

没有创建 getter 和 setter 方法,因为我有另一个 TMDBMovie 对象,它包含大量信息,并且有自己的 getter 和 setter 方法。

  • 基本上,我使用这个 POJO 作为中间传输对象...
  • 我的问题

    您认为这两点可以吗:

    1. 这个 POJO 有 3 层公共(public)嵌套类,Retrofit 可以很好地处理。

    2. 我确实有一个 TMDBMovie 对象,它有自己的 getter 和 setter 方法,通过它们我可以进行检查、验证和少量数据操作。如果公共(public)变量运行正常的话,这个 POJO 是否还需要 getter 和 setter 方法?

    最佳答案

    命名类变量以便将 JSON 转换为 Java 对象是一个好主意。但是,类不需要嵌套。您可以定义 List<Result> results并在其他地方定义 Result 类。希望这一点是清楚的。

    关于java - 这是没有 get/set 的 Retrofit POJO 的正确方法吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32413332/

    相关文章:

    java - 使用新证书更新 Java keystore 和信任库

    java - 如何返回通用 ArrayList<T>

    java - "attach source"可以让流行的 Java 库变得更容易吗?

    php - 从 PHP REST Web 服务返回 JSON 结果

    json - 使用Elasticsearch Nest客户端和Utf8Json序列化器时如何捕获与任何POCO属性都不匹配的JSON数据的剩余部分

    python - 如何在一个 Django HttpResponse 中返回两个变量?

    java - Mockito 替换方法

    java - 使用 Java 和 Google 的 Firestore 运行查询时没有输出

    java - fragment 中缺少 TextView 数据(文本)

    java - 如何在我的 list 中正确设置多个 applicationIds 或包名称