使用Gson和Anko

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用Gson和Anko相关的知识,希望对你有一定的参考价值。

我有一个JSON,我想在我的应用程序中使用它的数据,但我无法正确解析JSON,所以我可以使用JSON中的值来设置片段中的不同按钮文本。问题是每次我在feed.first_film时我都会变空。 我正在使用Gson。

我的JSON

{
"data": {
    "films": [
        {
            "film_id": "8",
            "first_film": "Dunkirk",
            "first_thumb": "firstlog.jpg",
            "first_desc": "Action- Drama-History",
            "second_film": "The Good Doctor S1 E11",
            "second_thumb": "secondlog.png",
            "second_desc": "Drama",
            "third_film": "Pirates Of The Caribbean Dead Men Tell No Tales",
            "third_thumb": "thirdlog.png",
            "third_desc": "Action- Fantasy-Adventure",
        }
    ]
}
}

我的主要活动.kt

class MoviesFrag : Fragment(), View.OnClickListener {
    var moviesURL: String? = null
    var ds: String? = null
    val url = "http://sign.aya.sy/mobi/index.php/welcome/get_films_det"
    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        doAsync() {
            firstEx()
            uiThread {
                activity!!.longToast(ds)
            }
        }
        val view = inflater.inflate(R.layout.movies_frag, container, false)
        return view
    }
    fun firstEx() : Films{
        val moviesJsonString = URL(url).readText()
        Log.i("Json", moviesJsonString)
        val gson = GsonBuilder().create()
        val feed = gson.fromJson(moviesJsonString, Films::class.java)
        ds = feed.first_film
        return feed
    }

我的DataClass.kt

data class MoviesData(val data: Data)

data class Data(val films: List<Films>)
data class Films(val film_id: String,
                 val first_film: String,
                 val first_thumb: String,
                 val first_desc: String,
                 val second_film: String,
                 val second_thumb: String,
                 val second_desc: String,
                 val third_film: String,
                 val third_thumb: String,
                 val third_desc: String,
                 val desc: String)
答案

更改型号名称MoviesData表格Films

 val moviesData= gson.fromJson(moviesJsonString, MoviesData::class.java)//Here you get moviesData array .

以上是关于使用Gson和Anko的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Kotlin 中使用 anko 删除除最新 10 条记录之外的所有记录?

最火Kotlin库之Anko详解

在Android中用Kotlin的Anko运行后台任务(KAD 09)

用Anko和Kotlin实现Android上的对话框和警告提示(KAD 24)

Anko使用指南之Intent

anko的基本viewPager示例