Analysieren eines JSON-Arrays mit dem Ergebnis Dies ist keine JSON-Array-Ausnahme

Ich versuche, ein Json-Array zu analysieren, das so aussieht:

{
  "FoodItemData": [
      {
        "country": "GB",
        "id": "100",
        "name": "Steak and Kidney Pie",
        "description": "Tender cubes of steak, with tender lamb kidney is succulent rich gravy.  Served with a side of mashed potatoes and peas.",
        "category": "Dinner",
        "price": "15.95"
      },
      {
        "country": "GB",
        "id": "101",
        "name": "Toad in the Hole",
        "description": "Plump British Pork sausages backed in a light batter.  Served with mixed vegetables and a brown onion gravy.",
        "category": "Dinner",
        "price": "13.95"
      },
      {
        "country": "GB",
        "id": "102",
        "name": "Ploughman’s Salad",
        "description": "Pork Pie, Pickled Onions, Pickled relish Stilton and Cheddar cheeses and crusty French bread.",
        "category": "Lunch",
        "price": "10.95"
      }
]
}

ich benutzeGson um diesen Json zu analysieren.

URL url = getClass().getClassLoader().getResource("FoodItemData.json");

        FileReader fileReader = null;
        try {
            fileReader = new FileReader(url.getPath());
        } catch (FileNotFoundException e) {
            e.printStackTrace();
        }
        JsonReader jsonReader = new JsonReader(fileReader);
        Gson gson = new Gson();
        JsonParser parser = new JsonParser();
        JsonArray Jarray = parser.parse(jsonReader).getAsJsonArray();

        List<FoodItem> listOfFoodItems = new ArrayList<FoodItem>();

        for (JsonElement obj : Jarray) {
            FoodItem foodItem = gson.fromJson(obj, FoodItem.class);
            listOfFoodItems.add(foodItem);
        }

Dieser Code ergibtjava.lang.IllegalStateException: This is not a JSON Array Ausnahme. DasFoodItem Klasse enthält die Variablen mit dem gleichen Namen wie in der Json.

public class FoodItem {
    private String id;
    private String name;
    private String description;
    private String category;
    private String price;
    private String country;
}

Vermisse ich hier etwas? Ich habe versucht, den folgenden Code wie in angegeben zu verwendendiese Antwort, aber ich habe die gleiche Ausnahme wie die in dieser Frage erwähnte. Jede Hilfe wäre dankbar.

Gson gson = new GsonBuilder().create();
Type collectionType = new TypeToken<List<FoodItem>>(){}.getType(); 
List<FoodItem> foodItems = gson.fromJson(jsonReader, collectionType);

Antworten auf die Frage(2)

Ihre Antwort auf die Frage