Retrofit和Moshi:解析变量名对象

时间:2018-02-16 05:22:16

标签: android kotlin retrofit retrofit2 moshi

我正在使用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",
}

1 个答案:

答案 0 :(得分:2)

正如@ eric-cochran指出的那样,你并不需要一个新的数据类来代表这一点。它最终会成为一张地图,您可以这样使用它:

@GET("data/getlist")
fun getVariableData(): Single<Map<String, String>>