Я использую API, где я предоставляю входную строку, и возвращает некоторые автозаполнения ключевых слов и узлы продуктов.У меня проблема с десериализацией ответа JSON с gson
Моя цель - десериализовать ответ и получить список строк автозаполнения, которые я могу использовать. Я пытаюсь реализовать это в приложении Android с библиотекой Retrofit, которая использует gson.
Во-первых, я не уверен, что у меня есть типичный ответ JSON. Элемент «nodes» имеет пары ключ/значение, но строка ввода и список автозаполнения не имеют ключей, которые я могу использовать.
["pol",
["polaroid camera",
"polo",
"polo ralph lauren",
"polo ralph lauren men",
"polar heart rate monitor",
"polaroid",
"polo shirt",
"polar watch",
"police scanner",
"polar"],
[{
"nodes": [{
"alias": "electronics",
"name": "Electronics"
},
{
"alias": "electronics-tradein",
"name": "Electronics Trade-In"
}]
},
{
},
{
},
{
},
{
},
{
},
{
},
{
},
{
},
{
}],
[]]
Это моя попытка классов java для десанциализации gson. Однако это не работает, как я понимаю, gson нуждается в переменных класса для соответствия ключам JSON (true для класса Node, но не для остальных).
class Response {
String input;
List<String> keywords;
List<Node> nodes;
}
class Node {
String alias;
String name;
}
Да, я заметил, что было бы идеально, если бы ответ был в этом формате. Я надеялся, что будет более элегантное решение, чем манипулирование ответом, когда я вызову API. – csab
сначала разобрать его на JSonArray, а затем обработать каждый элемент отдельно .. но на самом деле это гнарный набор "valid json" – Dave