Android 改进Json Expect数组和get对象的映射
我有Json:Android 改进Json Expect数组和get对象的映射,android,json,retrofit,Android,Json,Retrofit,我有Json: { "data":[ "name": "name1", "surname": "surname1", "id": "22", "motivations": [] }, "1:"{ "name": "name2", "surname": "surname2", "id"
{
"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);
}
助手类
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);
}
publicstaticvoidgetperson(回调、上下文上下文、映射参数){
mContext=上下文;
ApiService ApiService=ApiClient.getClient().create(ApiService.class);
Map queryMap=getQueryMap(上次事件调用时间戳,参数);
Call Call=apiService.getPerson(queryMap);
call.enqueue(回调);
}
当我做出回应时,我的主要活动是:
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);
ApiHelper.getPerson(新回调(){
@凌驾
公共void onResponse(调用、响应){
List mlist=response.body();
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
Log.i(标记“ERROR”+t.getMessage());
}
},main活动。此,选项);
我请求的url是正确的,但我遇到了如下错误:
应为BEGIN_数组,但在第1行第2列路径处为BEGIN_对象$
你的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
}
在“data”之后有一个左括号,用于标记数组的开始。但是在数组结束之前,有一个结束对象的结束的卷曲括号。有问题。您的个人详细信息位于jsonarray数据下,而不是JSONObject是,我想将其映射到个人列表您可以拥有个人数据的arraylist。我建议在线使用json到pojo生成器。此外,还可以使用自定义转换器除去不需要的json包装器。检查这个,如果你的json响应是错误的,就让它proper@Bhavnik在我的问题中编辑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
}