使用Kotlin中的改造来解析JSON对象 [英] parse JSON object using retrofit in kotlin

查看:602
本文介绍了使用Kotlin中的改造来解析JSON对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试使用Kotlin中的翻新库显示json数据

I am trying to show json data using retrofit library in kotlin

这是我的杰森:

[
  {
    "login": "mojombo",
    "id": 1,

  },
  {
    "login": "defunkt",
    "id": 2,
    }
]

我的主要活动

 call.enqueue(object : Callback<UserResponse> {
        override fun onResponse(call: Call<UserResponse>, response: Response<UserResponse>) {
            Log.e("list","list")
            val countrylist = response.body()
            for (size in response.body()) {
                System.out.println(size.toString())
            }

            // var listOfMovies: List<UserResponse> = response.body()?.results!!
           // myCustomAdapter = UserListAdapter(applicationContext, listOfMovies)
          //  recyclerView.setAdapter(myCustomAdapter)
            progressBar.visibility = View.GONE
        }

        override fun onFailure(call: Call<UserResponse>?, t: Throwable?) {
            progressBar.visibility = View.GONE
            Log.e("list", t.toString())
        }
    })

推荐答案

这就是我们应用程序中的内容

That's what we have on our app

object GetFAQsAPI {

private val LOG_TAG = GetFAQsAPI.javaClass.simpleName

interface ThisCallback {

    fun onSuccess(getFAQs: GetFAQs)

    fun onFailure(failureMessage: String)

    fun onError(errorMessage: String)
}

/* POST */
fun postData(jo: JsonObject, callback: GetFAQsAPI.ThisCallback) {
    val call = Service.getService().get_faqs(jo)
    call.enqueue(object : Callback<JsonObject> {

        override fun onResponse(call: Call<JsonObject>, response: Response<JsonObject>) {

            //Log.e(LOG_TAG, response.body().toString());

            try {
                if (response.body()?.get("success")!!.asBoolean) {

                    val gson = GsonBuilder().setPrettyPrinting().create()
                    val getFAQs = gson.fromJson(response.body(), GetFAQs::class.java)

                    callback.onSuccess(getFAQs)

                } else {
                    Log.e(LOG_TAG, "else")

                    val error = response.body()!!.get("err").asString

                    callback.onError(error)
                }

            } catch (e: Exception) {
                Log.e(LOG_TAG, "exception" + e.localizedMessage)

                callback.onFailure(e.message!!)
            }

        }

        override fun onFailure(call: Call<JsonObject>, t: Throwable) {
            Log.e(LOG_TAG, "onFailure: " + t.message)

            callback.onFailure(t.message!!)

        }
    })

}

}

这就是我们从片段中调用它的方式-getFAQs是已解析的对象.

That's how we call it from our fragment - getFAQs is the object parsed.

private fun getFAQsAPI() {

    showLoading(true)

    val jo = JsonObject().apply {
        addProperty("faq_category", "admin")
    }

    GetFAQsAPI.postData(jo, object : GetFAQsAPI.ThisCallback {
        override fun onSuccess(getFAQs: GetFAQs) {
            Log.i(LOG_TAG, "onSuccess")

            showLoading(false)

            updateUI(getFAQs)
        }

        override fun onFailure(failureMessage: String) {
            Log.e(LOG_TAG, failureMessage)
        }

        override fun onError(errorMessage: String) {
            Log.e(LOG_TAG, errorMessage)
        }
    })
}

希望有帮助.

这篇关于使用Kotlin中的改造来解析JSON对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆