【问题标题】:How to read from this JSON file如何从此 JSON 文件中读取
【发布时间】:2020-11-30 07:54:20
【问题描述】:

我是 android 和 JSON 的新手,但我正在制作一个非常简单的应用程序,它应该在回收器视图中显示数据,其中包含由 JSON 文件提供的信息,如下所示:

{"server":"SuspServer","team":[{"name":"john","lastName":"doe"},{"name":"jane","lastName":"doe"}]}

它得到这样的信息请求:

val jsonRequest : StringRequest = StringRequest(Request.Method.GET, url, Response.Listener { response->
        //Log.i("JSON", response.toString())
        val gson = Gson()
        val itemType = object : TypeToken<List<suspect>>(){}.type
        val suspects : List<suspect> = gson.fromJson(response.toString(), itemType)

我的预感(我在写这个问题时注意到了这个错误)是我要求一个可疑对象的列表,虽然它接收字符串“name”和“lastName”作为参数,但在 JSON 中无法识别,但我有不知道如何以 JSON 文件中的格式引用它们

【问题讨论】:

    标签: android json kotlin gson


    【解决方案1】:

    您的 json 结构代表一个如下所示的类:

    data class MyClass(
        val server: String,
        val team: List<Team>
    )
    
    data class Team(
        val name: String,
        val lastName: String
    )
    

    所以当你反序列化时,你可以给它类型:

    val myDeserializedObject: MyClass = gson.fromJson(response.toString(), MyClass::class.java)
    

    【讨论】:

      【解决方案2】:

      您可以使用此方法从资源中读取您的 json:

      
      // JSON data
      fun Context.readJsonAsset(filename: String): String {
          val inputStream = assets.open(filename)
          val size = inputStream.available()
          val buffer = ByteArray(size)
          inputStream.read(buffer)
          inputStream.close()
          return String(buffer, Charset.defaultCharset())
      }
      
      
      data class MyClass(
          val server: String,
          val team: List<Team>
      )
      
      data class Team(
          val name: String,
          val lastName: String
      )
      

      此方法是如何在 DTO 示例 MyClass 上读取和设置的示例:

      fun fetchJson(context: Context?): MyClass {
          val gson = Gson()
          val inputString = context?.readJsonAsset("database.json")
      
          return gson.fromJson(inputString, MyClass::class.java)
      }
      
      

      【讨论】:

        猜你喜欢
        • 2018-03-15
        • 2019-11-25
        • 1970-01-01
        • 1970-01-01
        • 2023-03-13
        • 2011-10-06
        • 2020-12-07
        • 2019-09-16
        • 2013-12-10
        相关资源
        最近更新 更多