解析 json 错误:java.lang.IllegalStateException

我正在尝试解析一个包含一堆城市的大型 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: 然后它在冒号后吐出整个文件。


繁星点点滴滴
浏览 212回答 2
2回答

慕容708150

改成// JsonElement je = jsontree.getAsJsonObject();JsonArray ja = jsontree.getAsJsonArray();因为它在顶层包含一个数组

郎朗坤

尝试下面给定的代码来处理这两种情况if (jsontree instanceof JsonObject) {    JsonObject  jobject = new JsonObject(jsontree .getAsJsonObject()); } else if (jsontree instanceof JsonArray) {    JsonArray  jarray =  new JsonArray(jsontree .getAsJsonArray()); }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java