Android Retrofit - 如何解析 Github Emojis API
Posted
技术标签:
【中文标题】Android Retrofit - 如何解析 Github Emojis API【英文标题】:Android Retrofit - How to parse Github Emojis API 【发布时间】:2021-06-20 16:38:26 【问题描述】:请查看此 api:https://api.github.com/emojis
这是响应的一部分:
"+1": "https://github.githubassets.com/images/icons/emoji/unicode/1f44d.png?v8",
"-1": "https://github.githubassets.com/images/icons/emoji/unicode/1f44e.png?v8",
"100": "https://github.githubassets.com/images/icons/emoji/unicode/1f4af.png?v8",
"1234": "https://github.githubassets.com/images/icons/emoji/unicode/1f522.png?v8",
"1st_place_medal": "https://github.githubassets.com/images/icons/emoji/unicode/1f947.png?v8",
"2nd_place_medal": "https://github.githubassets.com/images/icons/emoji/unicode/1f948.png?v8",
"3rd_place_medal": "https://github.githubassets.com/images/icons/emoji/unicode/1f949.png?v8",
"8ball": "https://github.githubassets.com/images/icons/emoji/unicode/1f3b1.png?v8",
"a": "https://github.githubassets.com/images/icons/emoji/unicode/1f170.png?v8",
"ab": "https://github.githubassets.com/images/icons/emoji/unicode/1f18e.png?v8",
"abacus": "https://github.githubassets.com/images/icons/emoji/unicode/1f9ee.png?v8",
"abc": "https://github.githubassets.com/images/icons/emoji/unicode/1f524.png?v8",
"abcd": "https://github.githubassets.com/images/icons/emoji/unicode/1f521.png?v8",
我想将此响应转换为表情符号列表。
data class Emoji(
val name: String,
val url: String,
)
请注意,响应是一个大对象,我需要一个列表。
这就是我实例化改造的方式:
val retrofit = Retrofit.Builder()
.baseUrl(BuildConfig.BASE_URL)
.addConverterFactory(MoshiConverterFactory.create())
.build()
我怎样才能实现它?
【问题讨论】:
【参考方案1】:您没有附加 Api 接口,但根据您的描述,您已将 List<Emoji>
放入您的 api 接口中,这将引发 MalformedJSONException
请改用Map<String, String>
,如果您需要列表,请使用responseMap.map Emoji(it.key, it.valie)
【讨论】:
我忘记将我的 Api 附加到问题中的改造。有效!谢谢!以上是关于Android Retrofit - 如何解析 Github Emojis API的主要内容,如果未能解决你的问题,请参考以下文章
Android 网络框架之Retrofit2使用详解及从源码中解析原理
Android Kotlin Retrofit + SimpleXMLConverter ElementList 解析不正确