我正在使用Retrofit 2和Moshi从端点读取和解析JSON。我的改造实例定义如下:
val retrofit: Retrofit = Retrofit.Builder()
.baseUrl("https://myendpoint.com")
.addCallAdapterFactory(RxJava2CallAdapterFactory.create())
.addConverterFactory(MoshiConverterFactory.create())
.build()
我正在使用Kotlin数据类将信息存储在模型中:
@GET("data/getlist")
fun getData(): Single<Data>
数据类:
data class Data(val Response : String,
val Message : String,
val BaseImageUrl : String)
现在,因为JSON的格式是这样的,所以解析了JSON并且模型填充得很好:
{
"Response": "Success",
"Message": "Api successfully returned",
"BaseImageUrl": "https://www.endpoint.com/image/xxx.jpg",
}
这是因为对象与模型进行1:1的映射。因此在上面的示例中,“Response”键映射到Data类中的“Response”变量名。
我的问题是:如果键都是变量怎么办?你怎么能在Kotlin数据类中表示这个?
要解析的示例JSON文件:
{
"RandomX": "xxxxxx",
"RandomY": "yyyyyy",
"RandomZ": "zzzzzz",
}
答案 0 :(得分:2)
正如@ eric-cochran指出的那样,你并不需要一个新的数据类来代表这一点。它最终会成为一张地图,您可以这样使用它:
@GET("data/getlist")
fun getVariableData(): Single<Map<String, String>>