我们的团队决定使用改造2.0 http://square.github.io/retrofit/我正在对这个库进行一些初步研究。如标题所述,我想通过 Android 应用程序中的 Retrofit 2.0 解析一些嵌套的 JSON 对象。
例如,是一个嵌套的 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": ...
},
{...},
...
]
}
我对里面的 JSON 对象感兴趣items
大批。我注意到有一些帖子 https://stackoverflow.com/questions/23070298/get-nested-json-object-with-gson-using-retrofit关于通过 Retrofit 1.X 解析嵌套 JSON 对象,但最新的 Retrofit 2.0 API 发生了很大变化,这在使它们适应新 API 时会令人困惑。
我想到了两种可能的解决方案:
- 编写我自己的 JSON 转换器工厂来扩展转换器工厂 https://square.github.io/retrofit/javadoc/retrofit/Converter.Factory.html.
- 以 String 类型返回原始响应并自行解析。但根据我的初步研究,从 Retrofit 2.0 获得原始响应并不容易。 Retrofit 2.0 似乎坚持在将响应传递给我之前将其转换为某种内容,并且 Retrofit 不提供自己的
StringConverter
。 (可能是我错了~)
Update:我们实际上可以通过设置来获得原始响应JSONElement
作为HTTP API接口的pojo,并使用Retrofit提供的GSONConverter作为转换器。
假设您的完整 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": [
{
"member1": "memeber value",
"member2": "member value"
},
{
"member1": "memeber value",
"member2": "member value"
}
]
}
所以 Pojo 类是
public class MainPojo {
private String title;
private String description;
private String link;
private String generator;
private String modified;
private ArrayList<Items> items;
// Getters setters
}
public class Items {
private String member2;
private String member1;
// Getters setters
}
Note :这对于您的 JSON 来说是类似的解决方案。如果 JSON 有其他键,则可以更改 Items.java 的成员。
将 Pojo 更新为新的 JSON
public class Items {
private String tags;
private String author;
private String title;
private String description;
private String link;
private String author_id;
private String published;
private Media media;
// Getters and Setters
}
public class Media {
private String m;
// Getters and Setters
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)