2014-10-17 3 views
0

Ниже приведено описание структуры данных, в которой мне нужно приложение Android, чтобы перейти к API REST в форме JSON. Особо следует отметить поле «ответ», которое изменяется по типу. Иногда это логическое, иногда целое число, или это может быть строка или массив целых чисел. По различным причинам API-интерфейс сервера не может быть легко изменен, поэтому я должен поддерживать его как есть.Поддержка различного типа данных объекта с помощью Retrofit

Как я могу настроить использование моей модификации, чтобы обслуживать поле, которое варьируется в типе данных, как это? Я ранее писал адаптеры типа адаптера для Retrofit и отлично работает для обработки ответов, но что эквивалентно адаптеру типа для запросов?

array(
     array(
       question_id => 1, 
       route_id => 1, 
       response => true, 
       timestamp => ‘2014-01-01 20:01:01' 
     ), 
     array(
       question_id => 2, 
       route_id => 1, 
       response => ’this is a string', 
       timestamp => ‘2014-01-01 20:01:01' 
     ), 
     array(
       question_id => 3, 
       route_id => 1, 
       response => 1, 
       timestamp => ‘2014-01-01 20:01:01' 
     ), 
     array(
       question_id => 4, 
       route_id => 1, 
       response => array(
         1234, 
         178, 
         109 
       ), 
       timestamp => ‘2014-01-01 20:01:01' 
     ), 
) 
+0

возможно дубликат [Как справиться с динамической JSON в Модернизированный?] (Http://stackoverflow.com/questions/24279245/how-to-handle-dynamic-json-in-retrofit) – dominik4142

ответ

0

Получается, что это в высшей степени легко. Если Retrofit передается объектам типа Object в классе модели, он интеллектуально преобразует их в правый тип поля JSON.

public class MyModel { 

    // Renders to JSON as boolean, int, String etc depending on the underlying class 
    public Object response; 

}