为什么我不能使用 Gson 从 json 获取嵌套数据?

Why can't I fetch nested data from json using Gson?

我有一个 json 我从一个 API 中获取,如下所示:

{"success":true,"message":"","result":{"Bid":6886.97100000,"Ask":6891.58500000,"Last":6891.58500000}}

我只想在 class.

的字段中保存买价和卖价

首先,我像这样解析整个 json:

   val response = sendRequest(url))
   val gson = Gson()
   val ticker : MarketTickerEntity = gson.fromJson(response, MarketTickerEntity::class.java)

然后我尝试在我的 class 初始化块中解析它并重新分配给出价和要价字段。

我的class:

class MarketTickerEntity(@SerializedName("result")val result: JsonObject? = null) : TickerEntity {

  override val fee: Double = 0.0001
  override var bid: Double = 0.0
  override var ask: Double = 0.0

  data class ResultData (
    val Bid: Double,
    val Ask: Double,
    val Last: Double
  )

  init {
    if(result != null) {
      val gson = Gson()
      val res: ResultData = gson.fromJson(result, ResultData::class.java)
      bid = res.Bid
      ask = res.Ask
    }
  }

}

但不幸的是结果总是空的。

我尝试过更改 JsonObject?字符串?在结果类型中然后我得到错误:

Expected a string but was BEGIN_OBJECT at line 1 column 40 path $.result

我无法克服它,所以我编写了自己的函数来手动解析 json 我通过了。

  override fun receiveJson(json: String){
    val gson = Gson()
    val tickerJson: JsonObject = gson.fromJson(json, JsonObject::class.java)
    val resultJson: JsonObject = gson.fromJson(tickerJson.get("result"), JsonObject::class.java)
    bid = resultJson.get("Bid").asDouble
    ask = resultJson.get("Ask").asDouble
  }