在没有模型的Java中使用GSON解析JSON文件
我正试图用GSON解析一个JSON文件,其结构如下:在没有模型的Java中使用GSON解析JSON文件,java,json,gson,Java,Json,Gson,我正试图用GSON解析一个JSON文件,其结构如下: [ { "datasetid":"geonames-postal-code@public-us", "recordid":"2d026c84998f913f0f0f5dd9f0d17ab0f78f5c44", "fields":{ "longitude":"
[
{
"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
类)。前者占用更少的内存,并且更安全。