[英]Retrofit JSON Array Parsing
无法理解如何解析此json数组。
[{“ id”:“ 154”,“ ontime”:“ 2016-03-15”,“ offtime”:“ 2016-04-14”,“ usluga_id”:“ 2”,“ name”:“ 50mpbs”, “ period”:“ 30”,“ cost”:“ 300”},
{“ id”:“ 152”,“ ontime”:“ 2016-03-15”,“ offtime”:“ 2016-04-14”,“ usluga_id”:“ 4”,“ name”:“ TV60”,“期间“:” 30“,”费用“:” 100“},
{“ id”:“ 156”,“ ontime”:“ 2016-03-15”,“ offtime”:“ 2016-04-04”,“ usluga_id”:“ 5”,“ name”:“ TV120”,“期间”:“ 20”,“费用”:“ 200”},
{“ id”:“ 153”,“ ontime”:“ 2016-03-15”,“ offtime”:“ 2016-03-30”,“ usluga_id”:“ 6”,“ name”:“ SMS-check” ,“期间”:“ 15”,“费用”:“ 50”}]
@Generated(“ org.jsonschema2pojo”)
public class UserService {
@SerializedName("id")
@Expose
private String id;
@SerializedName("ontime")
@Expose
private String ontime;
@SerializedName("offtime")
@Expose
private String offtime;
@SerializedName("usluga_id")
@Expose
private String uslugaId;
@SerializedName("name")
@Expose
private String name;
@SerializedName("period")
@Expose
private String period;
@SerializedName("cost")
@Expose
private String cost;
/**
*
* @return
* The id
*/
public String getId() {
return id;
}
/**
*
* @param id
* The id
*/
public void setId(String id) {
this.id = id;
}
/**
*
* @return
* The ontime
*/
public String getOntime() {
return ontime;
}
/**
*
* @param ontime
* The ontime
*/
public void setOntime(String ontime) {
this.ontime = ontime;
}
/**
*
* @return
* The offtime
*/
public String getOfftime() {
return offtime;
}
/**
*
* @param offtime
* The offtime
*/
public void setOfftime(String offtime) {
this.offtime = offtime;
}
/**
*
* @return
* The uslugaId
*/
public String getUslugaId() {
return uslugaId;
}
/**
*
* @param uslugaId
* The usluga_id
*/
public void setUslugaId(String uslugaId) {
this.uslugaId = uslugaId;
}
/**
*
* @return
* The name
*/
public String getName() {
return name;
}
/**
*
* @param name
* The name
*/
public void setName(String name) {
this.name = name;
}
/**
*
* @return
* The period
*/
public String getPeriod() {
return period;
}
/**
*
* @param period
* The period
*/
public void setPeriod(String period) {
this.period = period;
}
/**
*
* @return
* The cost
*/
public String getCost() {
return cost;
}
/**
*
* @param cost
* The cost
*/
public void setCost(String cost) {
this.cost = cost;
}
public class ServicesArray {
private List<UserService> services;
public ServicesArray(){};
public List<UserService> getServices() {
return services;
}
public void setServices(List<UserService> services) {
this.services = services;
}
活动中...
公共无效的GetUserServices(){
Retrofit retrofit = new Retrofit.Builder()
.baseUrl("http://cybergenesis.ru/egor/")
.addConverterFactory(GsonConverterFactory.create())
.build();
APIService service = retrofit.create(APIService.class);
Call<ServicesArray> call = service.getUserServices("egoraa");
call.enqueue(new Callback<ServicesArray>() {
@Override
public void onResponse(Call<ServicesArray> call, retrofit2.Response<ServicesArray> response) {
String[] services = new String[response.body().getServices().size()];
response.body().getServices().toArray(services);
Log.d(TAG,"OKKKK");
}
@Override
public void onFailure(Call<ServicesArray> call, Throwable t) {
Log.d(TAG,"ERROR PROFIT");
}
});
}
日志:D / MainScreen:错误利润
响应为空,我的问题是什么?
您发布的JSON是用户列表,因此,与其创建ServicesArray
类进行解析,不如对其进行反序列化,就好像它是User
对象列表一样:
Type type = new TypeToken<Collection<User>>(){}.getType();
List<User> users = new Gson().fromJson(jsonString,type);
代替:
List<User> users = new Gson().fromJson(jsonString,User.class);
您有一系列用户。 使用它作为服务回调的返回类型。 阵列映射到改造中的列表。
public class UserList{
private List<User>users;
public UserList(){};
public List<User>getUsers() {
return users;
}
public void setUsers(List<User>users) {
this.users= users;
}
}
如果所有响应都为json格式,则可以在所有响应上设置GSON Converter
Retrofit retrofit = new Retrofit.Builder()
.baseUrl(BASE_URL)
.addConverterFactory(GsonConverterFactory.create(builder.create()))
.build();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.