如何在没有第三方解析器的情况下解析Kotlin中的JSON?

时间:2018-04-15 20:50:06

标签: android kotlin

我试图在不使用第三方JSON解析器的情况下手动解析Kotlin中的JSON(与已经提出的其他问题不同)。我正在使用themovieDb api构建Udacity的“热门电影”应用程序,以便用Kotlin轻松构建Android应用程序,因为我之前从未使用过Kotlin。对于第一部分,我想在3列网格中显示电影海报。这是API中poster_path对象的位置:

{
  ...
  "poster_path": "...jpg",
}

在Java中,我通常会创建一个JSONObject,然后在该对象上使用getStringgetInt等方法来检索我需要的特定信息。如何在Kotlin中解决这个问题?

到目前为止我使用的是一个使用Recyclerview在3列网格上重复相同图像的应用程序:

class MainActivity : AppCompatActivity() {


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        val recyclerView = findViewById<RecyclerView>(R.id.recycler_view);
        recyclerView.layoutManager = LinearLayoutManager(this, LinearLayoutManager.VERTICAL, false);
        recyclerView.layoutManager = GridLayoutManager(this, 3);
        recyclerView.adapter = RecyclerAdapter()
    }

    data class Response(val movieTitle: String,
                        val moviePoster: Int,
                        val overview: String,
                        val ratings: Int,
                        val releaseDate: String,
                        val review: String)
}

2 个答案:

答案 0 :(得分:1)

  

我更习惯手动解析JSON,而不是使用像GSON或Volley这样的解析器。

我将此解释为您希望从JSON中提取数据,自己走JSON结构,而不是使用填充模型对象的JSON解析器。

在这种情况下,没有什么能阻止您在Kotlin中使用JSONObject,就像在Kotlin中使用BundleLinearLayoutManager以及RecyclerView一样。所以,val json = JSONObject(jsonText)和东西应该可以正常工作。

答案 1 :(得分:0)

与Java中的方式完全相同。用Java编写的代码可以在Kotlin应用程序中运行。还要记住Java不支持本机JSON,你提到的这个JSONObject来自com.google.gson包。