Извлечь json значение объекта с помощью Gson - PullRequest
0 голосов
/ 22 февраля 2020

Предположим, веб-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? = ""
)

1 Ответ

0 голосов
/ 22 февраля 2020

Попробуйте это

Если вы используете 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!!
    }
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...