我从Android应用中的Jersey项目中获取了一个JSON字符串{"status":208,"routes":[1,9,3]}
。 JSON字符串没有标志名称。用GSON libarary解析它是否可能?我实际上只是在其中的ArrayList routes
值中被强制插入。我做了以下但我没有列表可以得到。我怎么能用Gson做到这一点?
doInbackground方法:
StringBuilder sb = new StringBuilder();
reader = new BufferedReader(new InputStreamReader(
conn.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
Gson gson = new Gson();
StopsJSONList obj = gson.fromJson(sb.toString(), StopsJSONList.class);
List<StopsJSON> stopsjson = obj.getStopsList();
Iterator<StopsJSON> iterator = stopsjson.iterator();
while(iterator.hasNext()){
StopsJSON stopsElement = (StopsJSON) iterator.next();
ArrayList<Integer> routeList = stopsElement.getRoute();
}
StopsList类:
import java.util.ArrayList;
public class StopsJSONList {
private ArrayList<StopsJSON> stops;
public ArrayList<StopsJSON> getStopsList() {
return stops;
}
public void setStopsList(ArrayList<StopsJSON> stopsList) {
this.stops = stopsList;
}
}
StopsJSON:
import java.util.ArrayList;
public class StopsJSON {
private int status;
private ArrayList<Integer> route ;
public StopsJSON(int status, ArrayList<Integer> route) {
//super();
this.status = status;
this.route = route;
}
public int getStatus() {
return status;
}
public ArrayList<Integer> getRoute() {
return route;
}
public void setStatus(int status) {
this.status = status;
}
public void setRoute(ArrayList<Integer> route) {
this.route = route;
}
}
答案 0 :(得分:2)
您的问题是route
类中的StopsJSON
属性与json结构中的routes
字段不匹配。要解决此问题,您可以将StopsJSON
类的属性更改为routes
或添加类似的注释
@SerializedName("routes")
private ArrayList<Integer> route ;
这是一种简单的方法:
创建课程StopsJSON
,如下所示
class StopsJSON {
private int status;
private ArrayList<Integer> routes;
public StopsJSON(int status, ArrayList<Integer> route) {
// super();
this.status = status;
this.routes = route;
}
public int getStatus() {
return status;
}
public ArrayList<Integer> getRoutes() {
return routes;
}
public void setStatus(int status) {
this.status = status;
}
public void setRoutes(ArrayList<Integer> routes) {
this.routes = routes;
}
}
使用Gson API将json String转换为StopsJSON
对象
Gson gson = new Gson();
StopsJSON data = gson.fromJson(sb.toString(), StopsJSON.class);
获取routes
ArrayList<Integer> routes = data.getRoutes();
System.out.println(routes);
输出:
[1, 9, 3]