如何处理 android 中 reddit api 的深度嵌套 json 响应?

How to handle the deeply nested json response of reddit apis in android?

我正在尝试使用 android 中的 Reddit API。我目前正在使用带有 GSon 的 Retrofit。

我正在处理的端点之一有一个非常复杂的 API 响应。

https://oauth.reddit.com/subreddits/popular

API 响应如下所示: https://gist.github.com/roysailor/c991d8a854c064cbc48e2ee2d2ad2b69

我试过为它创建一个模型class,但这似乎是一个非常漫长的过程。

其他选项使用 POJO 生成器或手动 JSON 解析。

您认为处理此类回复的最佳方式是什么?

我认为“处理此问题的最佳方法”是基于意见的,但出于好奇,我将您的原始 JSON 复制粘贴到 jsonschema2pojo.org 它产生了 4 类 描述你的数据(所以它并不那么复杂)。

您绝对可以将它们导入您的代码库,因为 Reddit API 不太可能在不警告您的情况下更改其模型。

Child.java
Data.java // You should probably rename this
Data_.java // This aswell 
Example.java

Example.java :


package com.example;

import java.util.HashMap;
import java.util.Map;
import com.fasterxml.jackson.annotation.JsonAnyGetter;
import com.fasterxml.jackson.annotation.JsonAnySetter;
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonPropertyOrder;

@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonPropertyOrder({
    "kind",
    "data"
})
public class Example {

    @JsonProperty("kind")
    private String kind;
    @JsonProperty("data")
    private Data data;
    @JsonIgnore
    private Map<String, Object> additionalProperties = new HashMap<String, Object>();

    @JsonProperty("kind")
    public String getKind() {
        return kind;
    }

    @JsonProperty("kind")
    public void setKind(String kind) {
        this.kind = kind;
    }

    @JsonProperty("data")
    public Data getData() {
        return data;
    }

    @JsonProperty("data")
    public void setData(Data data) {
        this.data = data;
    }

    @JsonAnyGetter
    public Map<String, Object> getAdditionalProperties() {
        return this.additionalProperties;
    }

    @JsonAnySetter
    public void setAdditionalProperty(String name, Object value) {
        this.additionalProperties.put(name, value);
    }

}

随时 fiddle 调整参数以更好地适应您的代码库。

Gson 与 Arthur 的回答中创建的 POJO 结合使用。

处理JSON的最佳方法是识别JSON中的数据结构,创建表示这些结构的POJO,然后使用GSON或其他JSON序列化库进行转换从 POJO 到 JSON 字符串并返回。

https://github.com/google/gson