【问题标题】:get model list from a json array kotlin从 json 数组 kotlin 获取模型列表
【发布时间】:2023-01-29 20:19:23
【问题描述】:

在我的代码中,我试图从 json 文件中获取收入类型对象列表

   val fileJson = File(
        Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_DOCUMENTS),
        "Income.json")
    val strFileJson: String? = fileJson.readText()
    val PreviousJsonObj: JSONObject = JSONObject(strFileJson)
    val array: JSONArray = PreviousJsonObj.getJSONArray("Incomes")
    val typeToken = object : TypeToken<List<Income>>() {}.type
    IncomeArry = Gson().fromJson<List<Income>>(strFileJson, typeToken)

但我越来越 com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: 应为 BEGIN_ARRAY 但在第 1 行第 2 列路径 $ 处为 BEGIN_OBJECT

strFileJson 中返回的值为 "Incomes":[{"date":"abc","src": "cfgb","amt": 7890}, {“日期”:“yui”,“src”:“tyhv”,“amt”:6789}]

尝试使用 gson 和多类架构的多个实现运行

【问题讨论】:

    标签: json kotlin gson


    【解决方案1】:

    您显示的 JSON 片段:

    "Incomes":[{"date":"abc","src": "cfgb","amt": 7890}, {"date":"yui", "src":"tyhv","amt" :6789}]
    

    是畸形的,你是不是贴错了?它需要用大括号括起来:

    {"Incomes":[{"date":"abc","src": "cfgb","amt": 7890}, {"date":"yui", "src":"tyhv","amt" :6789}]}
    

    但这不会解决您的问题,因为两者都会给出您描述的错误。您正在尝试反序列化大批所以你需要

    1. 将 JSON 更改为
      [{"date":"abc","src": "cfgb","amt": 7890}, {"date":"yui", "src":"tyhv","amt" :6789}]
      
      1. 或者创建一个包装器对象,比如
      data class Incomes(
       val Incomes : List<Income>
      )
      

      并反序列化到那个。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 2014-09-17
      • 1970-01-01
      • 2022-06-19
      • 2020-12-07
      相关资源
      最近更新 更多