簡體   English   中英

在沒有模型的情況下在 Java 中使用 GSON 解析 JSON 文件

[英]Parsing a JSON file with GSON in Java without model

我正在嘗試使用具有以下結構的 GSON 解析 JSON 文件:

[
   {
      "datasetid":"geonames-postal-code@public-us",
      "recordid":"2d026c84998f913f0f0f5dd9f0d17ab0f78f5c44",
      "fields":{
         "longitude":"18.3475",
         "coordinates":[
            54.1486,
            18.3475
         ],
         "admin_name1":"Pomerania",
         "admin_name2":"Gda\u0144sk County",
         "admin_name3":"Przywidz",
         "postal_code":"83-041",
         "admin_code3":"220405",
         "country_code":"PL",
         "admin_code1":"82",
         "latitude":"54.1486",
         "admin_code2":"2204",
         "place_name":"Sucha Huta",
         "accuracy":"6"
      }
   },
   {
      "datasetid":"geonames-postal-code@public-us",
      "recordid":"c5f689d377a9a460d3b06b772fc621088484e719",
      "fields":{
         "longitude":"18.505",
         "coordinates":[
            54.2232,
            18.505
         ],
         "admin_name1":"Pomerania",
         "admin_name2":"Gda\u0144sk County",
         "admin_name3":"Pruszcz Gda\u0144ski",
         "postal_code":"83-041",
         "admin_code3":"220404",
         "country_code":"PL",
         "admin_code1":"82",
         "latitude":"54.2232",
         "admin_code2":"2204",
         "place_name":"\u017bu\u0142awka",
         "accuracy":"6"
      }
   }
]

我只需要讀取“字段”中的值。 我瀏覽了整個互聯網,我所能看到的只是在類/模型中運行的示例。

如何在沒有課程和模型的情況下閱讀?

BufferedReader br = null;
Gson gson = new Gson();
br = new BufferedReader(new FileReader("C:\\res\\postal_codes.json"));

最簡單的方法是使用Gson 的默認解析函數Gson#fromJson(String json, Type typeOfT)

我已經包含了一些您可以打印的值作為示例。

Reader reader = new BufferedReader(new FileReader("C:\\res\\postal_codes.json"));
JsonArray jsonElements = new Gson().fromJson(reader, JsonArray.class);
for (JsonElement jsonElement : jsonElements) {
    JsonObject item = jsonElement.getAsJsonObject();
    // Write datasetid.
    String datasetid = item.get("datasetid")
            .getAsString();
    System.out.println("Dataset ID: " + datasetid);
    // Write recordid.
    String recordid = item.get("recordid").getAsString();
    System.out.println("Record ID: " + recordid);
    // Write country_code.
    JsonObject fields = item.getAsJsonObject("fields");
    System.out.println("Country Code: " + fields.get("country_code").getAsString());
    // Write coordinates.
    JsonArray coordinates = fields.getAsJsonArray("coordinates");
    System.out.println("Coordinates: " + coordinates.toString());
}

注意:最好的方法是使用 POJO。 我建議您關心它,但出於某種原因,如果您想在沒有它的情況下繼續使用它,它會起作用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM