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