我正在尝试解析一个包含一堆城市的大型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:
然后在冒号后面吐出整个文件。
答案 0 :(得分:4)
更改为
// JsonElement je = jsontree.getAsJsonObject();
JsonArray ja = jsontree.getAsJsonArray();
因为它在顶层包含一个数组
答案 1 :(得分:1)
尝试以下给定的代码来处理这两种情况
if (jsontree instanceof JsonObject) {
JsonObject jobject = new JsonObject(jsontree .getAsJsonObject());
} else if (jsontree instanceof JsonArray) {
JsonArray jarray = new JsonArray(jsontree .getAsJsonArray());
}