Android Retrofit - анализировать объекты как список - PullRequest
0 голосов
/ 24 мая 2019

Я использую модификацию, чтобы получить данные из разговора. И ответ, который я получаю, содержит объекты 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>

Возможно ли это как-нибудь?

1 Ответ

1 голос
/ 24 мая 2019

Вы можете создать собственный анализатор JSON, но это не рекомендуется.Намного лучше использовать Retrofit parser.

Вы не можете анализировать, как вы описали, но было бы намного лучше, если бы вы могли обновить ответ сервера, поэтому это выглядит так:

{"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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...