У меня есть JSon:
дооснащение отображения Json Ожидать массив и получить объект
{
"data":[
"name": "name1",
"surname": "surname1",
"id": "22",
"motivations": []
},
"1:"{
"name": "name2",
"surname": "surname2",
"id": "23",
"motivations": []
},
{
"name": "name3",
"surname": "surname3",
"id": "24",
"motivations": []
}],
"sign": "9e46b7d6b140b",
"last_call": 1446
}
Модели класс:
class Person{
@DatabaseField
String name;
@DatabaseField
String surname;
@DatabaseField(id = true)
int id;
@DatabaseField(dataType = DataType.SERIALIZABLE)
List<Motivation> motivations
}
public interface ApiService {
public static final String TEST_SIGN = "test_KP1FE3R1";
@GET("api/person/{id}")
Call<JsonObject>getPerson(@Path("id") String id, @QueryMap Map<String, String> options);
}
API Client
public static Retrofit getClient() {
Gson gson = new GsonBuilder().setDateFormat("yyyy-MM-dd HH:mm:ss")
.setLenient() .create();
if (retrofit==null) {
retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(gson))
.build();
}
return retrofit;
}
Helper класс
public static void getPerson(Callback<List<Person>> callback, Context context, Map<String,String> params){
mContext=context;
ApiService apiService = ApiClient.getClient().create(ApiService.class);
Map<String,String> queryMap = getQueryMap(LAST_MUSEUM_EVENT_CALL_TIMESTAMP,params);
Call<List<Person>> call= apiService.getPerson(queryMap);
call.enqueue(callback);
}
И мой главный ActivityPart, когда я делаю ответ:
ApiHelper.getPerson(new Callback<List<Person>>() {
@Override
public void onResponse(Call<List<Person>> call, Response<List<Person>> response) {
List<Person> mlist = response.body();
}
@Override
public void onFailure(Call<List<Person>> call, Throwable t) {
Log.i(TAG,"ERROR"+ t.getMessage());
}
},MainActivity.this,options);
URL-адрес моего запроса является правильным, но Ive получил ошибку, как это:
Ожидаемое BEGIN_ARRAY но был BEGIN_OBJECT в строке 1 колонки 2 путь $
данные вашего лица находятся под данными jsonarray не jsonobject – Raghunandan
да и я хочу сопоставить его с перечнем лиц – Expiredmind
, вы можете получить данные о персонале. Я предлагаю использовать json для генератора pojo онлайн. Также вы можете избавиться от нежелательной обертки json с помощью настраиваемого конвертера. проверьте этот https://github.com/nickbutcher/plaid/commit/4e338a5 – Raghunandan