我只需要"照片"array.我的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/Rerofit的.我看到了this个,但我还不太明白怎么做.我想我可以做一些快速而肮脏的事情来获得我需要的值,这样我就可以继续构建我的应用程序(我稍后会回go 进行适当的实现).

My quick and dirty idea was 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中返回一张"照片",然后抓取图库中的项目.没有崩溃,但分析不正确.我得到"Photos"对象,但"Photo"为空.

对如何访问我需要的数据有什么 idea 吗?

推荐答案

不幸的是,@Json注释gets ignored in Kotlin classes.解决方法(来self 刚才给出的链接)是使用@field:Json.为您的数据类try 以下方法:

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
)

Kotlin相关问答推荐

Jetpack Compose Material3和Material2 Slider onValueChangeFinded()的行为不同

Microronaut Data 4和JDbi

数据源配置

我可以更改方法中泛型类的类型参数边界吗?

如何在操作系统版本上正确获取Room数据库的路径>;=26 sdk?

如何优雅地声明一个StateFlow?

垂直滚动条下拉菜单的桌面组合

在协程上下文中重新抛出异常

在kotlin中匹配多个变量

如何在 Kotlin 中为变量分配另一个变量的值?

关于 Kotlin 函数类型转换的问题

类型是什么意

Spring webflux bean验证不起作用

主机名不能为空

更新到版本4.10.1/4.10.2后 Gradle 同步失败

Kotlin协程处理错误和实现

用于代码生成的ANTLR工具版本4.7.1与当前运行时版本4.5.3不匹配

我应该在哪里调用 MobileAds.initialize()?

如何在 firebase 数据库中使用 kotlin 协程

RxJava - 每秒发出一个 observable