com.google.gson.JsonObject无法强制转换为com.google.gson.JsonArray

时间:2013-01-07 03:23:57

标签: json casting arrays

我在解析JSON响应时遇到了一些麻烦。回复数据:

{
    "deal": {
        "categorie": {
            "description": "Offres Shopping",
            "idcategorie": "1",
            "nom": "Shopping"
        },
        "conditions": "2 personne au plus",
        "dateAjout": "2013-01-07T00:00:00+01:00",
        "dateExp": "2013-01-31T00:00:00+01:00",
        "description": "nuit dans un hotel 5 etoile",
        "heurexp": "12",
        "iddeal": "1",
        "minutesexp": "30",
        "prestataire": {
            "adresse": "Qu zohour 44",
            "codePostale": "12600",
            "description": "Hotel 5 etoiles",
            "idprestataire": "1",
            "nom": "Hotel ronald",
            "pays": "France",
            "telephone": "99999999",
            "ville": "Brest"
        },
        "prix": "80.0",
        "prixHabituel": "200.0",
        "tags": "hotel",
        "titre": "Nuit 5 etoiles"
    }
}

尝试将此响应解析为List<Deal>时,我收到此异常:

  

com.google.gson.JsonObject无法转换为com.google.gson.JsonArray

这是我用于解析的代码:

if (reponse != null && !reponse.isEmpty()) {
System.out.println(reponse);

Gson g = new Gson();
JsonParser parser = new JsonParser();
JsonObject jObject = parser.parse(reponse).getAsJsonObject();
JsonArray jArray =  jObject.getAsJsonArray("deal");  // here goes the Exception
for (JsonElement elem : dealArray) {
deals.add(g.fromJson(elem, Deal.class));
}

    System.out.println(deals.toString());
    return "success";
}

谢谢

1 个答案:

答案 0 :(得分:5)

好吧,deal不是JSON数组,它是一个JSON对象。因此例外。作为参考,JSON数组看起来更像是这样:

"deal" : [{"attr" : "value"}, {"attr" : "value"}]