Java Gson - 从 JSON 树获取特定值

标签 java json servlets gson

我有这个 JSON:

request_time: "2018-03-13T00:59:44+00:00",
stops: [
{
atcocode: "370023715",
mode: "bus",
name: "AG1",
stop_name: "AG1",
smscode: "37023715",
bearing: "N",
locality: "Sheffield Centre",
indicator: "AG1",
longitude: -1.46616,
latitude: 53.38248,
distance: 57
},
{
atcocode: "370027281",
mode: "bus",
name: "AG12",
stop_name: "AG12",
smscode: "37027281",
bearing: "N",
locality: "Sheffield Centre",
indicator: "AG12",
longitude: -1.46583,
latitude: 53.38228,
distance: 77
}
]
}

我想检索并存储此子树中的每个位置和 atocode 的数组。我目前有这个 java 代码,但它只显示子树中的所有内容:

JsonParser parser = new JsonParser();
    JsonElement element = parser.parse(json);

    response.setContentType("text/html");
            PrintWriter  out  = response.getWriter();
            out.println("<html><body>");

    if (element.isJsonObject()){
        JsonObject bus = element.getAsJsonObject();

        JsonArray array = bus.getAsJsonArray("stops");
        for (int i = 0; i < array.size(); i++){
            out.println(array.get(i)); 

}

最佳答案

因此,只需在每个 "stops" 数组元素上使用 JsonObjectget 方法即可:

public static void main(String[] args) {
    String json = "{request_time: \"2018-03-13T00:59:44+00:00\",\n" + "stops: [\n" + "{\n"
        + "atcocode: \"370023715\",\n" + "mode: \"bus\",\n" + "name: \"AG1\",\n"
        + "stop_name: \"AG1\",\n" + "smscode: \"37023715\",\n" + "bearing: \"N\",\n"
        + "locality: \"Sheffield Centre\",\n" + "indicator: \"AG1\",\n" + "longitude: -1.46616,\n"
        + "latitude: 53.38248,\n" + "distance: 57\n" + "},\n" + "{\n" + "atcocode: \"370027281\",\n"
        + "mode: \"bus\",\n" + "name: \"AG12\",\n" + "stop_name: \"AG12\",\n"
        + "smscode: \"37027281\",\n" + "bearing: \"N\",\n" + "locality: \"Sheffield Centre\",\n"
        + "indicator: \"AG12\",\n" + "longitude: -1.46583,\n" + "latitude: 53.38228,\n"
        + "distance: 77\n" + "}\n" + "]\n" + "}";

    JsonParser parser = new JsonParser();
    JsonElement element = parser.parse(json);

    if (element.isJsonObject()) {
      JsonObject bus = element.getAsJsonObject();

      JsonArray array = bus.getAsJsonArray("stops");
      for (int i = 0; i < array.size(); i++) {
        System.out.println(((JsonObject) array.get(i)).get("locality"));
        System.out.println(((JsonObject) array.get(i)).get("atcocode"));
      }
    }
  }

输出:

"Sheffield Centre"
"370023715"
"Sheffield Centre"
"370027281"

附注我不提供如何将它们存储在数组中的代码,因为不清楚您要如何存储它,您想要多少个数组......

关于Java Gson - 从 JSON 树获取特定值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49246758/

相关文章:

java - 制作一个自动跳线的布局表

编辑 Primefaces 递归树时出现 java.lang.NumberFormatException

java - 读取/写入随机访问文件的最快方法?

java - 中止从 servlet 上传以限制文件大小

java - 使用 jettison 库在 JAVA 中进行 JSON 迭代

c# - Newtonsoft.Json 反序列化 base64 图像失败

json - JACKSON是否支持Java泛型?

java - headers 参数如何用于 RequestMapping 注释?

css - 在网页中显示数据库中的数据

json - 如何获取 JSON 数据并将其显示在 TableView 单元格上