如何在Kotlin/ gson中用数据类描述JSON列表

stszievb  于 2022-11-23  发布在  Kotlin
关注(0)|答案(2)|浏览(154)

我想从OpenStreetMap的nominatim解析JSON。
Example
这是一个列表,我不知道如何描述这个列表。我使用的是Gson,这是我的数据类:

data class Destination(
    val lat: Double,
    val lon: Double,
    val display_name: String
)

这是我Gson实现:

val list = Gson().fromJson<List<Destination>>(
    body,
    Destination::class.java
)

它给我这个错误:

java.lang.IllegalStateException: Expected BEGIN_OBJECT but was BEGIN_ARRAY at line 1 column 2 path $

但是我在我的Gson实现中声明了一个数组。有人知道如何修复这个问题吗?

deyfvvtc

deyfvvtc1#

您可以将其反序列化,如下所示:

val type = object : TypeToken<List<Destination>>() {}.type
Gson().fromJson<List<Destination>>(body, type)

类似于this问题中提到的内容

7d7tgy0s

7d7tgy0s2#

我想出来了,你必须使用Array,而不是List

val list : Array<Destination> = Gson().fromJson(
    body,
    Array<Destination>::class.java
)

相关问题