我试图在不使用第三方JSON解析器的情况下手动解析Kotlin中的JSON(与已经提出的其他问题不同)。我正在使用themovieDb api构建Udacity的“热门电影”应用程序,以便用Kotlin轻松构建Android应用程序,因为我之前从未使用过Kotlin。对于第一部分,我想在3列网格中显示电影海报。这是API中poster_path
对象的位置:
{
...
"poster_path": "...jpg",
}
在Java中,我通常会创建一个JSONObject
,然后在该对象上使用getString
或getInt
等方法来检索我需要的特定信息。如何在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)
}
答案 0 :(得分:1)
我更习惯手动解析JSON,而不是使用像GSON或Volley这样的解析器。
我将此解释为您希望从JSON中提取数据,自己走JSON结构,而不是使用填充模型对象的JSON解析器。
在这种情况下,没有什么能阻止您在Kotlin中使用JSONObject
,就像在Kotlin中使用Bundle
和LinearLayoutManager
以及RecyclerView
一样。所以,val json = JSONObject(jsonText)
和东西应该可以正常工作。
答案 1 :(得分:0)
与Java中的方式完全相同。用Java编写的代码可以在Kotlin应用程序中运行。还要记住Java不支持本机JSON,你提到的这个JSONObject来自com.google.gson包。