android - 使用 Moshi/Retrofit2 访问深度嵌套的 JSON 数组

标签 android kotlin retrofit2 moshi

我只需要“照片”数组。我的 JSON 看起来像这样:

 {
  "photos": {
    "page": 1,
    "pages": "1000",
    "perpage": 1,
    "total": "1000",
    "photo": [
      {
        "id": "44049202615",
        "owner": "159796861@N07",
        "secret": "cb8f476a4d",
        "server": "1958",
        "farm": 2,
        "title": "Murugan",
        "ispublic": 1,
        "isfriend": 0,
        "isfamily": 0
      }
    ]
  },
  "stat": "ok"
}

我是 Moshi/Retrofit 的新手。我看到了this但我还不太明白如何让它发挥作用。我想我可以做一些快速而肮脏的事情来获得我需要的值,这样我就可以继续构建我的应用程序(我稍后会返回以进行适当的实现)。

我快速而肮脏的想法是这样的:

data class GalleryItem(@Json(name = "title") val caption: String,
                       @Json(name = "id") val id: String,
                       @Json(name = "url_s") val url: String?)

data class Photo(@Json(name = "photo") val galleryItems: List<GalleryItem>)

data class Photos(@Json(name = "photos") val photo: Photo)

我想我可以从我的 api 返回一个“照片”并获取画廊项目。没有崩溃,但解析不正确。我得到“照片”对象,但“照片”为空。

关于如何访问我需要的数据有什么想法吗?

最佳答案

不幸的是,@Json 注解 gets ignored in Kotlin classes .解决方法(来 self 刚刚提供的链接)是使用 @field:Json 代替。为您的数据类尝试这样的事情:

data class ResponseData(
    val photos: Photos
)

data class Photos(
    @field:Json(name = "photo") val galleryItems: List<GalleryItem>
)

data class GalleryItem(
    val id: String,
    val title: String
)

关于android - 使用 Moshi/Retrofit2 访问深度嵌套的 JSON 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52548249/

相关文章:

android - 字符串资源中的土耳其语字符

android - 在 android Makefile 项目中包含 aar

android - 房间查询 : find within list is always returning null

安卓通用参数

android-studio - 如何使用 picasso 将图像从URL加载到小部件中的imageview中

android - Kotlin型干扰失败

android - OkHttp 和 Retrofit,并发请求刷新 token

c# - 计算旋转 [Unity C#]

java - 如何让 getIntent() 在使用 Intent 集调用 Activity 后返回 null

android - 改造错误预期 BEGIN_ARRAY 但 BEGIN_OBJECT 更改为对象确实对我有用