【问题标题】:Extract json object value using Gson使用 Gson 提取 json 对象值
【发布时间】:2020-02-22 08:41:18
【问题描述】:

假设 web api 返回一个像这样的 json 对象。

{
  "something": "value"
}

然后我使用 Gson 将其转换为本地类。

webRequest.enqueue(object : Callback<WebResponse> {

    override fun onFailure(call: Call<WebResponse>, t: Throwable) {
        // Log.e(TAG, "Failed", t)
    }

    override fun onResponse(call: Call<WebResponse>, response: Response<WebResponse>) {
        // Extracting the value from something in json object
    }
})

我定义了本地类,但不知道怎么用。

class WebResponse(
    @SerializedName("something")
    var something: String? = ""
)

【问题讨论】:

  • 来自onResponse() 方法的response 对象将调用一个WebResponse 对象,您可以使用它来检索您的something 变量
  • 我尝试了val webResponse: WebResponse? = response.body(),那么如何获取something 值?
  • 我认为你可以得到这样的值val something = webResponse!!.something

标签: android kotlin gson


【解决方案1】:

试试这个

如果你使用LiveData

private val _webResponse = MutableLiveData<WebResponse>()
val webResponse: LiveData<WebResponse>
    get() = _webResponse

// Your request
webRequest.enqueue(object : Callback<WebResponse> {

    override fun onFailure(call: Call<WebResponse>, t: Throwable) {
        // Log.e(TAG, "Failed", t)
    }

    override fun onResponse(call: Call<WebResponse>, response: Response<WebResponse>) {
        // Extracting the value from something in json object
        if (response.isSuccessful()) {
           _webResponse.value = response.body()
        }
    }
})

// You can use above live data as follow
webresponse.observe(viewLifecycleOwner, Observer {
    if (it != null) {
        // Do something with your `WebResponse` object
        val something = it.something!!
    }
})

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-23
    • 1970-01-01
    相关资源
    最近更新 更多