首页 > 解决方案 > 如何从 Android 上的改造响应中获取嵌套的 JSON 对象和数组?

问题描述

我想要做的是使用改造从 Web 响应中获取嵌套的 JSON 对象和数组

回应是:

{
"user": [
    {          
      "name": "Kaleigh Stamm",          
      "post": {
        "id": 1234,            
        "link": [
          "https://www.link1.com"
          "https://www.link2.com"
          "https://www.link3.com"
        ]
      }
    }
}

我可以毫无问题地获得名称,但是我无法解析帖子对象,也无法解析可能为空或有多个链接的链接数组。我现在需要实现一些帖子类,但不知道该怎么做

我有一个用户类

class user {
    
    @SerializedName("name")
    var name = ""
    
}

我有一个界面

interface userService {
    @GET("baseurlinfo")
    fun getUserList() : Call<userResponse>
}

这是我的主要

var BaseUrl = "https://baseURL.com/"
    val retrofit = Retrofit.Builder()
            .baseUrl(BaseUrl)
            .addConverterFactory(GsonConverterFactory.create())
            .build()

    val service = retrofit.create(userService::class.java)

    val call = service.getUserList()
    call.enqueue(object : Callback<userResponse> {
        override fun onResponse(call: Call<userResponse>, response: Response<userResponse>) {
            if (response.code() == 200) {
                val userResponse = response.body()!!
                for( user in userResponse.user){
                    Log.v("MainActivity", user.name)
                }
            }
        }
        override fun onFailure(call: Call<userResponse>, t: Throwable) {
            Log.v("MainActivity", t.toString())
        }
    })

任何关于如何处理 JSON 响应的其余部分的帮助或建议都会很棒,谢谢。

标签: androidarraysjsonretrofit

解决方案


您的用户类不完整。首先在此站点中添加以下 JSON(json 到 pojo)。然后获取java类,然后将其粘贴到android studio中。然后 android studio 会自动将其转换为 kotlin 类。然后只需从创建的用户类中获取您的链接。此外,您的 JSON 格式格式不正确,应如下所示:

{
"user": [
{          
  "name": "Kaleigh Stamm",          
  "post": {
    "id": 1234,            
    "link": [
      "https://www.link1.com",
      "https://www.link2.com",
      "https://www.link3.com"
    ]
  }
}
]
}

推荐阅读