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



我想从OpenStreetMap的nominatim中解析JSON。

例子这是一个列表,我不知道如何描述这个列表。我正在使用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实现中声明了一个数组。有人知道怎么解决这个问题吗?

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

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

与这个问题中提到的相似

我明白了,你必须使用Array,而不是List:

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

最新更新