解析json错误:java.lang.IllegalStateException:不是JSON对象:

问题描述

改成

// 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:
然后冒号后,它吐出了整个文件。

猜你在找的技术问答相关文章

如何检查配对的蓝牙设备是打印机还是扫描仪(Android)
是否允许实体正文进行HTTP DELETE请求?
如何将ZipInputStream转换为InputStream?
java.util.logging Java 8中的变量
PowerMockito.doReturn返回null
Java中的RESTful调用
Swing / Java:如何正确使用getText和setText字符串
特殊字符和重音字符
Android Studio中的ndk.dir错误
错误“找不到主类”