So, I have ActorModel class that includes arraylist of MovieModel. I was trying to encode it and send it in a bundle to the next activity. However, it is saying:
kotlinx.serialization.json.internal.JsonDecodingException: Expected start of the object '{', but had 'EOF' instead at path: $
JSON input: kotlinx.serialization
Here is my ActorModel Class:
package com.sanjarbek.flixster2
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import kotlinx.serialization.Serializable
@Serializable
data class ActorModel(
val name: String,
val popularity: String,
val profile_path: String, ) {
var movieModelArrayList: ArrayList<MovieModel> = ArrayList<MovieModel>()
set(value) {field = value}
get() = field
fun mainMovie(): String {
val json = Json.encodeToString<ArrayList<MovieModel>>(movieModelArrayList)
return json
}
fun main(): String {
val json = Json.encodeToString(ActorModel(name, popularity, profile_path))
return json
}
}
followed by MovieModel class:
package com.sanjarbek.flixster2
import kotlinx.serialization.encodeToString
import kotlinx.serialization.json.Json
import kotlinx.serialization.Serializable
@Serializable
data class MovieModel (
private val original_title: String="",
private val poster_path: String="",
private val overview: String=""
) {
fun get_title(): String{
return original_title
}
fun get_image(): String{
return poster_path
}
fun get_description(): String{
return overview
}
}
Here's the code where I tried sending it with bundle:
holder.image.setOnClickListener {
val intent = Intent(context, ActorInfoActivity::class.java)
intent.putExtra("image", image_url)
intent.putExtra("name", model.name)
intent.putExtra("model", model.main())
context.startActivity(intent)
}
And where I receive and decode it:
val actor = Json.decodeFromString<ActorModel>("kotlinx.serialization")
val movies = Json.decodeFromString<ArrayList<MovieModel>>("kotlinx.serialization")
Log.d("TAG", "onCreate: $actor"
Log.d("TAG", "onCreate: $movies")