我尝试在一个片段中设置将对象的arrayList保存到sharedPreferences以及从sharedPreferences中检索对象的arrayList,但我一直收到上面的错误。这是我的代码片段
fun getData() {
val sharedPreferences = activityCast().getSharedPreferences("DATA", Context.MODE_PRIVATE)
val gson = Gson()
val json = sharedPreferences.getString("data", null)
val type: Type = object : TypeToken<ArrayList<Car>>(){}.type
carsList = gson.fromJson(json, type)
if (carsList.isEmpty()){
carsList = ArrayList()
}
}
fun saveBillData(car: Car){
val sharedPreferences = activityCast().getSharedPreferences("DATA", Context.MODE_PRIVATE)
val editor = sharedPreferences.edit()
val gson = Gson()
carsList.add(car)
val json: String = gson.toJson(carsList)
editor.putString("data", json)
editor.apply
}
我查找错误,发现类似问题here
我得到是将sharedPreference.getString的第二个参数从null更改为“{}”
这样做会产生错误:
com.google.gson.JsonSyntaxException:java.lang.IllegalStateException:需要开始_ARRAY,但在路径$的第1行第2列却是BEGIN_OBJECT
1条答案
按热度按时间cpjpxq1n1#
JSON中的开始_OBJECT为{
开始数组为[
您正在尝试解析一个列表。因此,如果您没有任何数据,您希望它返回一个空列表,即“[]"。因此,您应该使用“[]”而不是“{}”