Kotlin如何使用GSON解析动态JSON字段?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Kotlin如何使用GSON解析动态JSON字段?相关的知识,希望对你有一定的参考价值。

所以,我看了很多文章,但似乎无法找出问题的答案。问题是我从api中得到了一个像这样的json文件:


  "forecast": 
    "2020-01-04": 
      "date": "2020-01-04",
      "mintemp": 7,
      "maxtemp": 11,
      "avgtemp": 9,
      "hourly": 
      ...
    
  

问题是此json中的“键”始终是今天(2020-01-04)。我现在这样做的方式是这样的:

data class ForecastDaysContainer(
    @SerializedName("2020-01-04")
    var forecastday1: FutureWeatherEntry,
    @SerializedName("2020-01-05")
    val forecastday2: FutureWeatherEntry,
    @SerializedName("2020-01-06")
    val forecastday3: FutureWeatherEntry,
    @SerializedName("2020-01-07")
    val forecastday4: FutureWeatherEntry,
    @SerializedName("2020-01-08")
    val forecastday5: FutureWeatherEntry,
    @SerializedName("2020-01-09")
    val forecastday6: FutureWeatherEntry,
    @SerializedName("2020-01-10")
    val forecastday7: FutureWeatherEntry
)

但是,这当然使我每天手动更改日期。有什么办法可以将SerializedName设置为今天的日期?当我尝试LocalDate.now().toString()我收到错误消息“注释参数必须是编译时常量”,但我似乎在kotlin中找不到合适的解决方案。非常感谢您的宝贵时间!

答案

Gson为此具有parse()方法。

val key = "2020-01-04" // This is generated, probably?
val json = JsonParser().parse(jsonString)
val result = json.asJsonObject["forecast"].asJsonObject[key]

以上是关于Kotlin如何使用GSON解析动态JSON字段?的主要内容,如果未能解决你的问题,请参考以下文章

Gson - 如何在 Kotlin 中解析部分 json

Gson 无法解析 Kotlin 中的字符串 json 格式数据

如何在 Android 的 Kotlin 中使用 GSON 将 JSON 对象转换为 JSON 数组

如何在 kotlin 中通过 GSON lib 解析 JSON 时管理 android 应用程序的空值

如何使用带有 Kotlin 的 Gson 库访问 JSON 有效负载中的嵌套值

在 Kotlin 中解析带有动态字段的 json 对象