2014-09-16 6 views
0

Я использую 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; 
} 

ответ

1

У json только несколько ключей в этом, это в значительной степени Json Array.

, если вы можете изменить JSON, сделать его больше, как это

{ 
    "input" : "pol", 
    "keywords" : ["polaroid camera","polo",...], 
    "nodes": [{ 
      "alias": "electronics", 
      "name": "Electronics" 
     }, 
     { 
      "alias": "electronics-tradein", 
      "name": "Electronics Trade-In" 
     }] 
} 
+0

Да, я заметил, что было бы идеально, если бы ответ был в этом формате. Я надеялся, что будет более элегантное решение, чем манипулирование ответом, когда я вызову API. – csab

+0

сначала разобрать его на JSonArray, а затем обработать каждый элемент отдельно .. но на самом деле это гнарный набор "valid json" – Dave