Android kotlin中的Json对象响应

Android kotlin中的Json对象响应,android,json,object,kotlin,Android,Json,Object,Kotlin,我在科特林遇到了一个问题。我的回答是: { "message":"Success", "status":false, "data":[ { "id":"1", "username":"doctor", "phone":null,

我在科特林遇到了一个问题。我的回答是:

{
   "message":"Success",
   "status":false,
   "data":[
      {
         "id":"1",
         "username":"doctor",
         "phone":null,
         "speciality":"General Physician",
         "name":"Doctor",
         "firstname":null,
         "lastname":null,
         "gender":"",
         "age":null,
         "dobirth":null,
         "email":"doctor@live.com",
         "country":"Pakistan",
         "state":"Punjab",
         "city":"Lahore",
         "address":null,
         "affiliation":"",
         "degree":"MBBS",
         "bio":null,
         "password":"$2y$10$KF1zBxe07nPBW.0hFWiFfOjIur4cYYfP.LlQlujjcHq4WmQMLGWLK",
         "remember_token":"UlekRgPJqWPx9AczdW2D7cyjiWkyU4mDpGYkR2QYovjsDCaVTt7adnQmSJQo",
         "image":"1496739459-ariba.jpg",
         "license_owner":"0",
         "status":"0",
         "switch_role":"1",
         "invitation_code":"",
         "created_at":"2018-10-01 07:55:47",
         "updated_at":"2018-01-26 00:02:50",
         "license_purchase_id":"0",
         "profile_active":"0",
         "pmdc":"",
         "flag":"1"
      },
      {
         "id":"2",
         "username":"khawarshah",
         "phone":null,
         "speciality":"",
         "name":"Syed Khawar",
         "firstname":null,
         "lastname":null,
         "gender":"",
         "age":null,
         "dobirth":null,
         "email":"jjshjasd@tech4lifeenterprises.com",
         "country":"",
         "state":"",
         "city":"",
         "address":null,
         "affiliation":"",
         "degree":"",
         "bio":null,
         "password":"$2y$10$3nG\/43tUdA2QKzinBPvA4.zqQHfxmR8sZ0LICQ3xg6LLr6mFYZq7q",
         "remember_token":"teuzY7HKubHdQg9TXA3zgDJmszrNPm2vBg1226JmDPhk0APZuEafIUpNGKJ4",
         "image":"",
         "license_owner":"0",
         "status":"1",
         "switch_role":"1",
         "invitation_code":"",
         "created_at":"2019-04-19 07:08:10",
         "updated_at":"2019-04-19 11:08:10",
         "license_purchase_id":"0",
         "profile_active":"0",
         "pmdc":"",
         "flag":"1"
      }
  ]
}
ApiClient类和ApiFactory是

主要片段是

class HomeFragment : Fragment() {

    private lateinit var homeViewModel: HomeViewModel

    lateinit var progerssProgressDialog: ProgressDialog
    var dataList = ArrayList<Users>()
    lateinit var recyclerView: RecyclerView
    lateinit var adapter:ListAdapter


    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        homeViewModel =
            ViewModelProviders.of(this).get(HomeViewModel::class.java)
        val root = inflater.inflate(R.layout.fragment_home, container, false)
        val RecyclerView: RecyclerView = root.findViewById(R.id.recyclerView)
        recyclerView = root.findViewById(R.id.recyclerView)
        recyclerView.adapter= ListAdapter(dataList,requireContext())
        recyclerView.layoutManager=LinearLayoutManager(requireContext(),LinearLayoutManager.VERTICAL,false)

        progerssProgressDialog=ProgressDialog(requireContext())
        progerssProgressDialog.setTitle("Loading")
        progerssProgressDialog.setCancelable(false)
        progerssProgressDialog.show()
        getData()

        return root
    }


    private fun getData() {
        val call: Call<List<Users>> = ApiClient.getClient.getPhotos()
        call.enqueue(object : Callback<List<Users>> {

            override fun onResponse(call: Call<List<Users>>?, response: Response<List<Users>>?) {
                progerssProgressDialog.dismiss()
                dataList.addAll(response!!.body()!!)

                recyclerView.adapter?.notifyDataSetChanged()
            }

            override fun onFailure(call: Call<List<Users>>, t: Throwable) {
                progerssProgressDialog.dismiss()
            }
        })
    }
}
class HomeFragment:Fragment(){
私有lateinit var homeViewModel:homeViewModel
lateinit变量ProgersProgressDialog:ProgressDialog
var dataList=ArrayList()
lateinit变量recyclerView:recyclerView
lateinit变量适配器:ListAdapter
覆盖创建视图(
充气机,
容器:视图组?,
savedInstanceState:捆绑?
):查看{
homeViewModel=
ViewModelProviders.of(this.get)(HomeViewModel::class.java)
val root=充气机。充气(R.layout.fragment_home,container,false)
val RecyclerView:RecyclerView=root.findviewbyd(R.id.RecyclerView)
recyclerView=root.findViewById(R.id.recyclerView)
recyclerView.adapter=ListAdapter(数据列表,requireContext())
recyclerView.layoutManager=LinearLayoutManager(requireContext(),LinearLayoutManager.VERTICAL,false)
ProgersProgressDialog=ProgressDialog(requireContext())
ProgersProgressDialog.setTitle(“加载”)
ProgersProgressDialog.setCancelable(false)
ProgersProgressDialog.show()
getData()
返回根
}
私有数据{
val call:call=ApiClient.getClient.getPhotos()
排队(对象:Callback{
覆盖fun onResponse(调用:调用?,响应:响应?){
ProgersProgressDialog.Disclease()
dataList.addAll(response!!.body()!!)
recyclerView.adapter?.notifyDataSetChanged()
}
覆盖失效时的乐趣(调用:调用,t:可丢弃){
ProgersProgressDialog.Disclease()
}
})
}
}

但在recyclerview中没有得到响应。错误是什么?

您的
用户
类与json的结构不匹配,因此您将无法解析它。看看你的json,它更像:

data class ResponseMessage(
    val message: String,
    val status: Boolean,
    val data: List<User>
)

data class User(
    val id: Long,
    val username: String,
    ...
)
数据类响应消息(
val消息:字符串,
val状态:布尔值,
val数据:列表
)
数据类用户(
val id:Long,
val用户名:String,
...
)

问题在于您的数据类“用户”。。请检查以下数据类以供参考:

data class Response(

@field:SerializedName("data")
val data: List<DataItem?>? = null,

@field:SerializedName("message")
val message: String? = null,

@field:SerializedName("status")
val status: Boolean? = null)

data class DataItem(

@field:SerializedName("country")
val country: String? = null,

@field:SerializedName("firstname")
val firstname: Any? = null,

@field:SerializedName("invitation_code")
val invitationCode: String? = null,

@field:SerializedName("flag")
val flag: String? = null,

@field:SerializedName("gender")
val gender: String? = null,

@field:SerializedName("city")
val city: String? = null,

@field:SerializedName("pmdc")
val pmdc: String? = null,

@field:SerializedName("bio")
val bio: Any? = null,

@field:SerializedName("created_at")
val createdAt: String? = null,

@field:SerializedName("switch_role")
val switchRole: String? = null,

@field:SerializedName("speciality")
val speciality: String? = null,

@field:SerializedName("password")
val password: String? = null,

@field:SerializedName("updated_at")
val updatedAt: String? = null,

@field:SerializedName("affiliation")
val affiliation: String? = null,

@field:SerializedName("license_owner")
val licenseOwner: String? = null,

@field:SerializedName("id")
val id: String? = null,

@field:SerializedName("state")
val state: String? = null,

@field:SerializedName("remember_token")
val rememberToken: String? = null,

@field:SerializedName("email")
val email: String? = null,

@field:SerializedName("image")
val image: String? = null,

@field:SerializedName("license_purchase_id")
val licensePurchaseId: String? = null,

@field:SerializedName("address")
val address: Any? = null,

@field:SerializedName("profile_active")
val profileActive: String? = null,

@field:SerializedName("degree")
val degree: String? = null,

@field:SerializedName("lastname")
val lastname: Any? = null,

@field:SerializedName("phone")
val phone: Any? = null,

@field:SerializedName("name")
val name: String? = null,

@field:SerializedName("dobirth")
val dobirth: Any? = null,

@field:SerializedName("age")
val age: Any? = null,

@field:SerializedName("username")
val username: String? = null,

@field:SerializedName("status")
val status: String? = null
数据类响应(
@字段:SerializedName(“数据”)
val数据:列表?=null,
@字段:SerializedName(“消息”)
val消息:字符串?=null,
@字段:SerializedName(“状态”)
val状态:布尔值?=null)
数据类数据项(
@字段:SerializedName(“国家”)
val国家/地区:字符串?=null,
@字段:SerializedName(“名字”)
val firstname:Any?=null,
@字段:SerializedName(“邀请码”)
val邀请代码:字符串?=null,
@字段:SerializedName(“标志”)
val标志:字符串?=null,
@字段:SerializedName(“性别”)
val性别:字符串?=null,
@字段:SerializedName(“城市”)
val city:字符串?=null,
@字段:SerializedName(“pmdc”)
val pmdc:字符串?=null,
@字段:SerializedName(“bio”)
val bio:有吗?=null,
@字段:SerializedName(“已创建”)
val createdAt:字符串?=null,
@字段:SerializedName(“交换机角色”)
val switchRole:字符串?=null,
@字段:SerializedName(“专业”)
val:字符串?=null,
@字段:SerializedName(“密码”)
val密码:字符串?=null,
@字段:SerializedName(“更新位置”)
val updatedAt:字符串?=null,
@字段:SerializedName(“附属关系”)
val从属关系:字符串?=null,
@字段:SerializedName(“许可证所有者”)
val licenseOwner:字符串?=null,
@字段:SerializedName(“id”)
val id:字符串?=null,
@字段:SerializedName(“状态”)
val状态:字符串?=null,
@字段:SerializedName(“记住令牌”)
val rememberToken:字符串?=null,
@字段:SerializedName(“电子邮件”)
val电子邮件:字符串?=null,
@字段:SerializedName(“图像”)
val图像:字符串?=null,
@字段:SerializedName(“许可证\购买\ id”)
val licensePurchaseId:字符串?=null,
@字段:SerializedName(“地址”)
val地址:有吗?=空,
@字段:SerializedName(“配置文件\活动”)
val profileActive:字符串?=null,
@字段:SerializedName(“学位”)
val度:字符串?=null,
@字段:SerializedName(“姓氏”)
val lastname:Any?=null,
@字段:SerializedName(“电话”)
val电话:有吗?=空,
@字段:SerializedName(“名称”)
val名称:字符串?=null,
@字段:SerializedName(“dobirth”)
val dobirth:有吗?=null,
@字段:SerializedName(“年龄”)
val年龄:有吗?=空,
@字段:SerializedName(“用户名”)
val用户名:字符串?=null,
@字段:SerializedName(“状态”)
val状态:字符串?=null

)您的数据类和JSON结构不匹配


使用插件从Android Studio中的json创建数据类

以及我在主类中使用的是哪个模型类Response或DataItem?只需将您的用户类替换为我编辑的上述代码,您还可以从文件->设置->插件->搜索RoboPOJOGenerate并安装。。成功安装后,右键单击包->新建->从Json生成POJO(在底部)。。只需复制粘贴ur json响应并生成类
data class Response(

@field:SerializedName("data")
val data: List<DataItem?>? = null,

@field:SerializedName("message")
val message: String? = null,

@field:SerializedName("status")
val status: Boolean? = null)

data class DataItem(

@field:SerializedName("country")
val country: String? = null,

@field:SerializedName("firstname")
val firstname: Any? = null,

@field:SerializedName("invitation_code")
val invitationCode: String? = null,

@field:SerializedName("flag")
val flag: String? = null,

@field:SerializedName("gender")
val gender: String? = null,

@field:SerializedName("city")
val city: String? = null,

@field:SerializedName("pmdc")
val pmdc: String? = null,

@field:SerializedName("bio")
val bio: Any? = null,

@field:SerializedName("created_at")
val createdAt: String? = null,

@field:SerializedName("switch_role")
val switchRole: String? = null,

@field:SerializedName("speciality")
val speciality: String? = null,

@field:SerializedName("password")
val password: String? = null,

@field:SerializedName("updated_at")
val updatedAt: String? = null,

@field:SerializedName("affiliation")
val affiliation: String? = null,

@field:SerializedName("license_owner")
val licenseOwner: String? = null,

@field:SerializedName("id")
val id: String? = null,

@field:SerializedName("state")
val state: String? = null,

@field:SerializedName("remember_token")
val rememberToken: String? = null,

@field:SerializedName("email")
val email: String? = null,

@field:SerializedName("image")
val image: String? = null,

@field:SerializedName("license_purchase_id")
val licensePurchaseId: String? = null,

@field:SerializedName("address")
val address: Any? = null,

@field:SerializedName("profile_active")
val profileActive: String? = null,

@field:SerializedName("degree")
val degree: String? = null,

@field:SerializedName("lastname")
val lastname: Any? = null,

@field:SerializedName("phone")
val phone: Any? = null,

@field:SerializedName("name")
val name: String? = null,

@field:SerializedName("dobirth")
val dobirth: Any? = null,

@field:SerializedName("age")
val age: Any? = null,

@field:SerializedName("username")
val username: String? = null,

@field:SerializedName("status")
val status: String? = null