问题描述
改成
// JsonElement je = jsontree.getAsJsonObject();
JsonArray ja = jsontree.getAsJsonArray();
因为它在顶层包含一个数组
解决方法
我正在尝试解析包含一个城市的大型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:
然后冒号后,它吐出了整个文件。