#java #api #okhttp #unirest
#json #Кастинг #массивы
Вопрос:
У меня возникли некоторые проблемы с синтаксическим анализом ответа 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 amp;amp; !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:
Ну, deal
это не массив JSON, это объект JSON. Отсюда и исключение. Массив JSON для справки выглядел бы примерно так:
"deal" : [{"attr" : "value"}, {"attr" : "value"}]
Комментарии:
1. да, но когда я вызываю jsonObejct.getAsJsonArray («сделка»), я хочу получить JSONArray, у меня возникает это исключение
2. Я не уверен, как это разбить дальше, вы не можете получить массив JSON из вашего объекта, потому что в нем нет массива. Во всем JSON, который вы опубликовали, буквально нет массива. Возможно, вы пытаетесь получить доступ к атрибутам
deal
?3. да, но я использую библиотеку Google для json Gson, и она предлагает такую возможность преобразовать JSONObject в JSONArray, но я не знаю, почему у меня эта ошибка
4. Хорошо, обяжите меня здесь. Перед выполнением преобразования добавьте эту строку в свой код и сообщите мне результат —
System.out.println("Is Array: " jsonObject.get("deal").isJsonArray());
5. Я хочу преобразовать JSONObject в JSONArray, чтобы создать свой объект, используя new Gson().from(JsonElement,Deal.class )