android - 如何处理android中reddit apis深度嵌套的json响应?
问题描述
我正在尝试在 android 中使用 Reddit API。我目前正在使用带有 GSon 的 Retrofit。
我正在处理的端点之一具有非常复杂的 API 响应。
https://oauth.reddit.com/subreddits/popular
以下是 API 响应的样子: https ://gist.github.com/roysailor/c991d8a854c064cbc48e2ee2d2ad2b69
我已经尝试为它创建一个模型类,但这似乎是一个非常漫长的过程。
其他选项是使用 POJO 生成器或手动 JSON 解析。
您认为处理此类响应的最佳方法是什么?
解决方案
我认为“处理此问题的最佳方法”是基于意见的,但出于好奇,我将您的原始 JSON 复制粘贴到jsonschema2pojo.org 中,它产生了 4 个描述您的数据的类(所以它并不那么复杂)。
您绝对可以将它们导入您的代码库,因为 Reddit API 不太可能在不警告您的情况下更改其模型。
Child.java
Data.java // You should probably rename this
Data_.java // This aswell
Example.java
例子.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);
}
}
随意摆弄参数以更好地适应您的代码库。
推荐阅读
- asp.net-mvc - 模态创建日志而不更改页面
- python - 用字符串替换特性键中的值
- php - Symfony 4 ORMException
- flutter - 如何在flutter中通过BloC模式在页面的加载(初始)处设置两个不同的列表
- python - 如何在抓取网站时浏览基于 js/ajax 的分页?
- laravel - 无法使用从管理面板创建的用户的正确凭据登录
- java - 由于错误代码,无法使用共享图像按钮:无法找到包含的已配置根
- javascript - 用 for 循环检查 3 的倍数
- php - laravel - 用户、用户信息、用户地址和用户联系人之间的雄辩关系
- c# - Net Core Identity 每个用户一个角色