【发布时间】:2020-09-22 15:50:41
【问题描述】:
第一次探索kotin的可能性,有点困惑如何将JSON字符串转换为List对象。
data.json 很简单
{
"0" : "some picture",
"1" : "other picture"
}
尝试像这样转换:
val inputStream: InputStream = context?.assets?.open("data.json") ?: return null
val size: Int = inputStream.available()
val buffer = ByteArray(size)
inputStream.read(buffer)
val jsonString = String(buffer)
println(jsonString)
val gson = Gson()
// THIS LINE CALLS ERROR
val list: List<String> = gson.fromJson(jsonString, Array<String>::class.java).asList()
list.forEachIndexed {index, item -> Log.i("item", "$index::$item")}
结果出现错误
com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_ARRAY but was BEGIN_OBJECT at line 1 column 2 path $
如何解决这个问题或如何从 json 字符串中正确检索列表对象?
【问题讨论】:
-
错误告诉你你需要知道什么。您告诉 Gson 期望一个数组(如果包含在 [ ] 中,将是一个数组),但您的字符串是一个对象(包含在 { } 中)