2015-07-12 3 views

ответ

2

Сначала создайте интерфейс обратного вызова, подобный этому, и передайте весь класс Object.

@POST(URL) 
public void newObject(@Body YourObject object, Callback<Boolean> success); 

Retrofit использует Gson для сериализации и десериализации JSON по умолчанию. Например, если ваш класс Object выглядел следующим образом:

public class YourObject { 

@Expose 
private String param1; 
@Expose 
private String param2; 

/** 
* 
* @return 
* The param1 
*/ 
public String getParam1() { 
return param1; 
} 

/** 
* 
* @param param1 
* The param1 
*/ 
public void setParam1(String param1) { 
this.param1 = param1; 
} 

/** 
* 
* @return 
* The param2 
*/ 
public String getParam2() { 
return param2; 
} 

/** 
* 
* @param param2 
* The param2 
*/ 
public void setParam2(String param2) { 
this.param2 = param2; 
} 

} 

Затем Gson автоматически сериализовать в следующем формате JSON,

[ 
    { 
     "param1": "string1", 
     "param2": "string2" 
    }, 
    { 
     "param1": "string3", 
     "param2": "string4" 
    } 
] 

И вы все сделали!

+0

, это замечательно, но что, если 'У меня есть другой Params, кроме массива Object, может Я все еще использую @Body? – sorinLates

+0

Да, вы можете. Просто добавьте любой другой параметр/вложение, за которым следует запятая. e.g @ POST (URL) public void newObject (объект объекта @Body Object, @Part («content») Содержание строки, обратный вызов успех); –

+2

Параметры @Body не могут использоваться с формой или многочастным кодированием. – sorinLates

0

Я просто должен был построить больше более сложный объект, учитывающие оба параметра, что-то вроде этого:

ComplexRequestObject complexRequestObject = new ComplexRequestObject(); 
complexRequestObject.param1 = new SemiComplexObject[]{ 
    new SemiComplexObject("value1", "valued2")}; 
complexRequestObject.param2 = "value3"; 
Смежные вопросы