Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在没有模型的Java中使用GSON解析JSON文件_Java_Json_Gson - Fatal编程技术网

在没有模型的Java中使用GSON解析JSON文件

在没有模型的Java中使用GSON解析JSON文件,java,json,gson,Java,Json,Gson,我正试图用GSON解析一个JSON文件,其结构如下: [ { "datasetid":"geonames-postal-code@public-us", "recordid":"2d026c84998f913f0f0f5dd9f0d17ab0f78f5c44", "fields":{ "longitude":"

我正试图用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的默认解析函数。

我提供了一些可以打印的值作为示例

Reader Reader=new BufferedReader(新文件读取器(“C:\\res\\postal_code.json”);
JsonArray jsonElements=new Gson().fromJson(reader,JsonArray.class);
用于(JsonElement JsonElement:jsonElements){
JsonObject item=jsonElement.getAsJsonObject();
//编写datasetid。
字符串datasetid=item.get(“datasetid”)
.getAsString();
System.out.println(“数据集ID:+datasetid”);
//写入记录ID。
字符串recordid=item.get(“recordid”).getAsString();
System.out.println(“记录ID:+recordid”);
//编写国家代码。
JsonObject字段=item.getAsJsonObject(“字段”);
System.out.println(“国家代码:”+fields.get(“国家代码”).getAsString());
//写坐标。
JsonArray坐标=fields.getAsJsonArray(“坐标”);
System.out.println(“坐标:“+Coordinates.toString());
}

注意:最好的方法是使用POJO。我建议您关注它,但出于某种原因,如果您不想继续使用它,它会起作用。

使用一个字段创建模型没有错,即使要反序列化的JSON有更多字段。如果您想要“非常通用”的解决方案,请将其读作
JsonElement
(请参阅Gson中的
Streams
类)。前者占用更少的内存,并且更安全。