我正在尝试解析一个包含一堆城市的大型 json 文件(以下是文件中的前两个城市): [ { "id": 707860, "name": "Hurzuf", "country": "UA", "coord": { "lon": 34.283333, "lat": 44.549999 } }, { "id": 519188, "name": "Novinki", "country": "RU", "coord": { "lon": 37.666668, "lat": 55.683334 } } ]我想获取“名称”值与字符串匹配的城市的 ID: JsonParser parser = new JsonParser(); JsonElement jsontree = parser.parse(new FileReader("C:/Users/kevin/Eclipse-workspace-new/kevinzhou_CSCI201_assignment3/WebContent/city.list.json")); JsonElement je = jsontree.getAsJsonObject(); JsonArray ja = je.getAsJsonArray(); for (Object o : ja) { JsonObject city = (JsonObject) o; if(cityName == city.get("name").getAsString()) { System.out.println(city.get("id").getAsString()); } }但是,我收到以下错误:java.lang.IllegalStateException: Not a JSON Object: 然后它在冒号后吐出整个文件。
2 回答
慕容708150
TA贡献1831条经验 获得超4个赞
改成
// JsonElement je = jsontree.getAsJsonObject();
JsonArray ja = jsontree.getAsJsonArray();
因为它在顶层包含一个数组
郎朗坤
TA贡献1921条经验 获得超9个赞
尝试下面给定的代码来处理这两种情况
if (jsontree instanceof JsonObject) {
JsonObject jobject = new JsonObject(jsontree .getAsJsonObject());
} else if (jsontree instanceof JsonArray) {
JsonArray jarray = new JsonArray(jsontree .getAsJsonArray());
}
添加回答
举报
0/150
提交
取消