我正在使用翻新从说话的声音中获取数据。我得到的响应包含JSON对象,例如“ field1”,“ field2”等。是否可以通过Retrofit解析此数据以获得包含该元素的列表?
目前,我的解析是这样的:
@SerializedName("field1")
val field1: Float?,
@SerializedName("field2")
val field2: Float?,
@SerializedName("field3")
val field3: Float?,
@SerializedName("field4")
val field4: Float?,
@SerializedName("field5")
val field5: Float?,
@SerializedName("field6")
val field6: Float?,
@SerializedName("field7")
val field7: Float?,
@SerializedName("field8")
val field8: Float?
我得到的答复:
{"created_at":"2019-05-24T06:11:43Z","entry_id":15419693,"field1":"370","field2":"56.390658174097666"}
我想得到这样的东西:
@SerializedName("field[]")
val fields List<Float>
有可能吗?
答案 0 :(得分:1)
您可以创建自定义JSON解析器,但不建议这样做。最好使用Retrofit解析器。
您无法按照您的描述进行解析,但是如果您可以更新服务器响应,那就更好了,所以看起来像这样:
{"created_at":"2019-05-24T06:11:43Z","entry_id":15419693,"fields":["370",:"56.390658174097666", "45"]}
然后在您的课程中定义
@SerializedName("fields")
var fields: List<Float>?
编辑:
如果您无法更新服务器响应,则可以做的就是定义助手功能:
public fun getFields() : ArrayList<Float?> {
var list = ArrayList<Float?>()
list.add(field1)
list.add(field2)
list.add(field3)
list.add(field4)
list.add(field5)
list.add(field6)
list.add(field7)
list.add(field8)
list.removeIf { it == null }
return list;
}