【发布时间】:2016-01-01 18:12:59
【问题描述】:
我们的团队决定使用Retrofit 2.0,我正在对该库进行一些初步研究。如标题所述,我想在我们的 Android 应用程序中通过 Retrofit 2.0 解析一些嵌套的 JSON 对象。
例如,here 是一个嵌套的 JSON 对象,格式为:
{
"title": "Recent Uploads tagged android",
"link": "https://www.flickr.com/photos/tags/android/",
"description": "",
"modified": "2015-10-05T05:30:01Z",
"generator": "https://www.flickr.com/",
"items": [
{
"title": ...
"link": ...
"media": {"m":"This is the value I want to get:)"}
"description": ...
"published": ...
"author": ...
"author_id": ...
"tags": ...
},
{...},
...
]
}
我对 items 数组中的 JSON 对象感兴趣。我注意到有 some posts 关于通过 Retrofit 1.X 解析嵌套 JSON 对象,但最新的 Retrofit 2.0 API 发生了很大变化,这在适应新 API 时会令人困惑。
我想到了两种可能的解决方案:
- 编写我自己的 JSON 转换器工厂,扩展 Converter.Factory。
- 以String类型返回原始响应并自行解析。但根据我最初的研究,要从 Retrofit 2.0 获得原始响应并不容易。 Retrofit 2.0 似乎坚持在将响应传递给我之前将其转换为某些内容,并且 Retrofit 不提供自己的
StringConverter。 (我可能错了~)
更新:我们实际上可以通过将JSONElement设置为HTTP API接口的pojo并使用Retrofit提供的GSONConverter作为转换器来获得原始响应。
【问题讨论】:
-
items 数组中有什么?你也可以发布那部分吗?
-
@PankajKumar 更新:)
-
我添加了一个类似于你的 JSON 的答案。试试看。
-
@PankajKumar 不错!如我更新的问题所示,我可以将
private JSONObject media定义为我的 pojo 中的成员,而不是定义一个新的Media类,因为键media的值也是 JSON? -
没有。为此,您还需要一门课。