Retrofit 2.0如何解析嵌套的JSON对象?
我们的团队决定使用Retrofit
2.0,并且我正在对该库进行一些初步研究。如标题中所述,我想通过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": ...
},
{...},
...
]
}
我对items
数组内的JSON对象感兴趣。我注意到有一些关于通过Retrofit
1.X解析嵌套JSON对象的文章,但是最新的Retrofit 2.0API发生了很大变化,这在将它们适应新API时会造成混淆。
我想到了两种可能的解决方案:
- 编写我自己的JSON转换器工厂,该工厂扩展了Converter.Factory。
- 以String类型返回原始响应,然后由我自己解析。但是根据我的初步研究,要获得Retrofit 2.0的原始响应并不容易。Retrofit 2.0似乎坚持要在将响应传递给我之前将其转换为某种东西,而Retrofit不提供自己的响应
StringConverter
。(我可能是错的〜)
通过设置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
}
这是用于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
}
以上是 Retrofit 2.0如何解析嵌套的JSON对象? 的全部内容, 来源链接: utcz.com/qa/413479.html