使用GSON动态命名SerializedName顶级对象

ffdz8vbo  于 2022-11-06  发布在  其他
关注(0)|答案(1)|浏览(204)

我是新的编程。我有一个应用程序,检索json数据从api使用retrofit,但我有一个小问题,json响应包含动态顶级对象:

  • 示例.json:*
{
  "ISBN:0-7868-5629-7": {
    "bib_key": "ISBN:0-7868-5629-7",
    "info_url": "https://openlibrary.org/books/OL25747413M/The_Lightning_Thief",
    "preview": "borrow",
    "preview_url": "https://archive.org/details/lightningthief0000rior_u3l0",
    "thumbnail_url": "https://covers.openlibrary.org/b/id/7357496-S.jpg",
    "details": {...}
  }
}
  • JSON模型.kt:*
...
data class JSONModel(
    @SerializedName("...") //<-- don't know how to annotate, should contain ISBN:<ISBN number>
    @Expose
    val isbn: ISBNModel
)

在这种情况下,如何注解动态顶层json对象?

更新似乎Gson在不使用@SerializedName(...)注解的情况下无法反序列化,我使用静态值进行了检查,结果正常。删除注解后,响应正文为空。是否需要此注解?

kxxlusnw

kxxlusnw1#

删除JSONModel数据类并使用Map〈String,ISBNModel〉解决了@Marcono1234提到的问题
在我的情况下,因为我正在使用翻新:

...
call.enqueue(object : Callback<Map<String, ISBNModel> { ... })
...

这样就可以解决了

相关问题