【发布时间】:2016-08-08 08:01:51
【问题描述】:
我正在为我的 API 连接使用 Gson GsonConverterFactory 的改造。我无法获取我的 API。
{
status: 100,
tb_name: "list",
data: {
1: {
distance: "",
Busid: "18",
locid: "6309",
business_name: " Park",
category_name: "Activities",
area: "Sharjah",
cat_image: "14645915394584643.png",
cusine: "",
city: "Sharjah",
lat_long: "25.342403, 55.379542",
image: "14650439123004854.jpg",
is_fav: "No"
},
2: {
distance: "",
Busid: "56",
locid: "6311",
business_name: "Bowling City",
category_name: "Activities",
area: "Abu Dhabi",
cat_image: "14645915394584643.png",
cusine: "",
city: "Abu Dhabi",
lat_long: "24.494183, 54.367608",
image: "14650440703886102.jpg",
is_fav: "No"
},
3: {
distance: "",
Busid: "56",
locid: "6312",
business_name: "Bowling City",
category_name: "Activities",
area: "Deira, Dubai",
cat_image: "14645915394584643.png",
cusine: "",
city: "Dubai",
lat_long: "25.251964, 55.332805",
image: "14650440703886102.jpg",
is_fav: "No"
},
4: {
distance: "",
Busid: "56",
locid: "6310",
business_name: "Bowling City",
category_name: "Activities & Leisure",
area: "Al Ain Mall, Al Ain",
cat_image: "14645915394584643.png",
cusine: "",
city: "Al Ain",
lat_long: "24.222321, 55.782205",
image: "14650440703886102.jpg",
is_fav: "No"
}
}
}
我创建了 pojo 类
public class ktbresponse {
private String status;
private String tb_name;
public String getStatus() {
return status;
}
public void setStatus(String status) {
this.status = status;
}
public String getTb_name() {
return tb_name;
}
public void setTb_name(String tb_name) {
this.tb_name = tb_name;
}
public application.myrestapi.com.myrestapiapplication.model.data getData() {
return data;
}
public void setData(application.myrestapi.com.myrestapiapplication.model.data data) {
this.data = data;
}
private data data;
}
public class data {
private String distance;
private String Busid;
public String getDistance() {
return distance;
}
public void setDistance(String distance) {
this.distance = distance;
}
public String getBusid() {
return Busid;
}
public void setBusid(String busid) {
Busid = busid;
}
public String getLocid() {
return locid;
}
public void setLocid(String locid) {
this.locid = locid;
}
public String getBusiness_name() {
return business_name;
}
public void setBusiness_name(String business_name) {
this.business_name = business_name;
}
private String locid;
private String business_name;
}
但是当我尝试打印时
Log.e("apiResponse",apiResponse.getStatus());Log.e("apiResponse",apiResponse.getData().getBusiness_name());
只打印状态。没有工作数据。我第一次看到这种类型的结构。让我知道我做错了什么。如何为这个结构创建 Pojo 类?
【问题讨论】:
-
您必须在
ktbresponse类中使用 List 数据而不仅仅是简单的 Data 对象。 -
@parohy java.lang.IllegalStateException: 应为 BEGIN_ARRAY,但在第 1 行第 40 列路径 $.data 处为 BEGIN_OBJECT
-
你的 json 意味着你有一个对象
data,它有对象1 ,2 and 3,我认为它可能会得到更多的对象 5 、 6 ...同时它不是一个数组,这是不是正确的方法,因为在 POJO 中,您必须拥有名称为 1 2 3 的属性(属性),这是无效的(变量名称不能以数字开头)所以我建议重新创建一个新的json 将具有 data[] 数组,这样您就可以在 POJO 中使用List<Data> data;,截至目前,如果您使用List,您将收到异常Expected BEGIN_ARRAY but was BEGIN_OBJECT... -
你的休息怎么样?你是如何定义接口的?在 json 中,只需
"data" : {object}, {object}...删除这些数字 -
P.S:我上面的评论是关于使用
GSON(自动解析),但如果你想手动解析 json 响应,即:jsonObj.getJsonObject("1");并附加对象(1,2,3. ..) 放入一个`Data`类型的数组中它是完全有效的。
标签: android json gson retrofit jsonobject