Why I get the following error at offset 6 with the following code. It makes an HTTP Request, gets a Json back, should go through the Json and create the object IMDBInfo. The json is valid, obviously processing, and the data class is as easy as it could be..., but I don't get the point of the error:
Error:
Exception in thread "main" kotlinx.serialization.json.internal.JsonDecodingException: Unexpected JSON token at offset 6: Expected beginning of the string, but got {
JSON input: {"d":[{"i":{"height":741,"imageUrl":.....
at kotlinx.serialization.json.internal.JsonExceptionsKt.JsonDecodingException(JsonExceptions.kt:24)
...
Code:
class StreamingAvailability() {
var IMDBName : String = ""
fun findOriginalTitle(title: String) = runBlocking {
val client = HttpClient(Apache) {
install(JsonFeature) {
serializer = KotlinxSerializer(kotlinx.serialization.json.Json {
prettyPrint = true
isLenient = true
ignoreUnknownKeys = true
coerceInputValues = true
allowStructuredMapKeys = true
})
}
}
val result : IMDBInfo = client.get {
url {
protocol = URLProtocol.HTTPS
encodedPath = "auto-complete"
host = "imdb8.p.rapidapi.com"
}
parameter("q", title)
headers {
append(HttpHeaders.Accept, "application/json")
append(HttpHeaders.ContentType, ContentType.Application.Json)
append(HttpHeaders.UserAgent, "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.81 Safari/537.36")
append(HttpHeaders.Authorization, API_KEY)
append("X-Rapidapi-Key", API_KEY)
append("X-Rapidapi-Host", "imdb8.p.rapidapi.com")
}
}
println(result.d)
}
}
Data Classes:
import kotlinx.serialization.Serializable
@Serializable data class D(
val l: String
)
@Serializable data class IMDBInfo(
val d: List<D>,
)
JSON which is valid and processed in the response:
{
"d": [{
"i": {
"height": 800,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMTMzNDkzMTcyOV5BMl5BanBnXkFtZTcwNDIzMjM2MQ@@._V1_.jpg",
"width": 550
},
"id": "tt1080016",
"l": "Ice Age: Dawn of the Dinosaurs",
"q": "feature",
"rank": 7936,
"s": "Ray Romano, John Leguizamo",
"v": [{
"i": {
"height": 360,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMTMyODMyMDY3MF5BMl5BanBnXkFtZTcwMTg2MTM0Mg@@._V1_.jpg",
"width": 480
},
"id": "vi3380019993",
"l": "Ice Age: Dawn of the Dinosaurs -- Trailer #2",
"s": "2:30"
}, {
"i": {
"height": 360,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMjFkMjY3NzYtNTkzOS00ZWM4LThhN2MtZTk0MTczMGRjZmNiXkEyXkFqcGdeQXVyNzU1NzE3NTg@._V1_.jpg",
"width": 480
},
"id": "vi64291353",
"l": "Ice Age: Dawn of the Dinosaurs",
"s": "0:59"
}, {
"i": {
"height": 360,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMTg1NTgwNzg5M15BMl5BanBnXkFtZTgwOTc4NzkxMzE@._V1_.jpg",
"width": 480
},
"id": "vi2023162649",
"l": "Ice Age: Dawn of the Dinosaurs -- Trailer #1",
"s": "2:34"
}],
"vt": 5,
"y": 2009
}, {
"i": {
"height": 500,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMjE1NTEwMTEwOF5BMl5BanBnXkFtZTcwMDA2MDQyOQ@@._V1_.jpg",
"width": 357
},
"id": "tt1907779",
"l": "The Dinosaur Project",
"q": "feature",
"rank": 39963,
"s": "Richard Dillane, Peter Brooke",
"v": [{
"i": {
"height": 480,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMTg3ODAxMTg4OF5BMl5BanBnXkFtZTcwNTg0OTI4OA@@._V1_.jpg",
"width": 640
},
"id": "vi3951666969",
"l": "The Dinosaur Project Trailer",
"s": "2:11"
}],
"vt": 1,
"y": 2012
}, {
"i": {
"height": 789,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMTk0MTI1NTI1MF5BMl5BanBnXkFtZTcwMDg2Mzc4OQ@@._V1_.jpg",
"width": 603
},
"id": "tt2303110",
"l": "Rise of the Dinosaurs",
"q": "feature",
"rank": 46988,
"s": "Gary Stretch, Corin Nemec",
"y": 2013
}, {
"i": {
"height": 1285,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMWI4ZjZmYTktOWIxNS00MmMyLTk5YzctNGQ4ZDg3MmIxYmZkXkEyXkFqcGdeQXVyODg1Njg2Njc@._V1_.jpg",
"width": 900
},
"id": "tt7818384",
"l": "Dino the Dinosaur",
"q": "TV series",
"rank": 65868,
"s": "June Yoon",
"y": 2016,
"yr": "2016-2019"
}, {
"i": {
"height": 475,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMTU2NDkyODcxM15BMl5BanBnXkFtZTcwNTA0MzQyMQ@@._V1_.jpg",
"width": 301
},
"id": "tt0136639",
"l": "Extreme Dinosaurs",
"q": "TV series",
"rank": 83132,
"s": "Scott McNeil, Cusse Mankuma",
"y": 1997,
"yr": "1997-1997"
}, {
"i": {
"height": 475,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BMTIzODM4NTYyMV5BMl5BanBnXkFtZTcwODYzMzAzMQ@@._V1_.jpg",
"width": 253
},
"id": "tt0103400",
"l": "The Dinosaurs!",
"q": "TV series",
"rank": 189562,
"s": "Barbara Feldon, Robert Bakker",
"y": 1992,
"yr": "1992-"
}, {
"i": {
"height": 2048,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BNGFlNDczMjMtNmQ1OS00MTJjLTk4NDQtNWU2OGY4Y2M2NDdlXkEyXkFqcGdeQXVyNjE4OTE4OTc@._V1_.jpg",
"width": 1418
},
"id": "tt14162824",
"l": "The Dinosaur",
"q": "feature",
"rank": 211135,
"s": "Veikko Aaltonen, Rauni Mollberg",
"y": 2021
}, {
"i": {
"height": 720,
"imageUrl": "https://m.media-amazon.com/images/M/MV5BYjQ3MTU3ZjgtNDA5Zi00N2EwLWExNjctZWJhMzFlMGVjOGJjXkEyXkFqcGdeQXVyNTg0NTkzNTk@._V1_.jpg",
"width": 1280
},
"id": "tt6877360",
"l": "The Day the Dinosaurs Died",
"q": "TV movie",
"rank": 212976,
"s": "Alice Roberts, Ben Garrod",
"y": 2017
}],
"q": "diedinos",
"v": 1
}
CodePudding user response:
Just rename the class D
to something that has more than 1 symbol. I've created an issue for this really weird behavior.