java - 使用 GSON 解析没有数组名称的 JSON 字符串

标签 java android json 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();

            }

停止列表类:

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;
    }
}

停止JSON:

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 String 转换为 StopsJSON 对象

Gson gson = new Gson();
StopsJSON data = gson.fromJson(sb.toString(), StopsJSON.class);

获取您的路线

ArrayList<Integer> routes = data.getRoutes();
System.out.println(routes);

输出:

[1, 9, 3]

关于java - 使用 GSON 解析没有数组名称的 JSON 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30276282/

相关文章:

java - 我使用什么 URL 在 Web 浏览器中打开 String 对象

java - JsonObject jar 文件

javascript - Angular 不解析 json

java - 如何在 Spock groovy 中模拟 RequestEntity.put() 和 restTemplate.exchange()

java - Eclipse 无法加载 javadoc ("Unknown javadoc format for <class name>")

java - 通过多个映射对实体进行映射中的重复列

javascript - 新项目与本地 react 但错误

java - 游戏 - 使用带有 openCV 人脸检测的前置摄像头

android - 如何通过 Kotlin 在 ListView 上获取已检查的 ID?

c# - 使用 Json.NET 将 JSON 反序列化为对象