[英]Parse JSON String without array name with GSON
我從Android應用程序的Jersey項目中獲取了JSON字符串{"status":208,"routes":[1,9,3]}
。 JSON字符串沒有標志名稱。 用GSON庫解析它是可能的嗎? 實際上,我只是在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;
}
}
您的問題是StopsJSON
類中的route
屬性與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字符串轉換為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]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.