我在kotlin中使用restfit2作为rest API,并从服务器获取数据,但是,每次API发送响应时,JSON数据都不相同,也不相同。我想处理动态JSON对象响应。我不知道该怎么做。
我为静态JSON数据创建了数据类,但想要动态。
data class GetDetails(
var Id: String? = null,
var UId: String? = null,
var DOB: String? = null,
var Name: String? = null,
var Address: String? = null
)
使用
处理响应requestCall.enqueue(object : Callback<List<GetDetails>> {
override fun onResponse(call: Call<List<GetDetails>>, response: Response<List<GetDetails>>) {
...
})
我创建了一个静态数据类,但是,我想处理动态JSON对象响应。我的意思是,当服务器API发送带有4个JSON元素或10个JSON元素或20个JSON元素的响应时。我应该能够处理它。
请帮助我。
答案 0 :(得分:0)
您可以在json中以JsonElement的形式获取响应,然后进行处理
@POST("function/ResizeImage?")
fun resizeImage(@Query("AppGuid") guid:String,
@Query("UserAppGuid") uuid:String,
@Query("ImageUrl") imageUrl:String,
@Query("Width") width:String,
@Query("Height") height:String,
@Query("FileName") fileName:String,
@Query("FileType") fileType:String): Call<JsonElement>
答案 1 :(得分:0)
对于一个模型处理4个JSON元素到20个JSON元素而言,这只是一个坏习惯。但是,如果要执行此操作,则必须将所有字段都设置为可为空(如果没有任何强制性),并在尝试访问每个字段时检查每个字段的onResponse是否为空。
答案 2 :(得分:0)
如果您的JSON响应是动态变化的,则可以将JSON存储为键值对(Map
在kotlin中,您还可以将类委托属性存储在地图中