У меня есть ответ JSON, который выглядит следующим образом. Я хочу извлечь значения «text» и поместить их в набор строк (т. Е. Мне не обязательно, чтобы весь JSON был дериализован).
Я использую библиотеку GSON
Пока мой метод выглядит так (очевидно, что это неправильно):
public static Response deserialise(String json){
Gson gson = new Gson();
Response r = gson.fromJson(json, Response.class);
return r;
}
Я звоню deserialise
с этим:
Response r = deserialise(json);
System.out.println("[status]: "+r.getStatus()); // works fine
Collection<Keyword> coll = r.getKeywords();
Iterator<Keyword> itr = coll.iterator();
while(itr.hasNext()){
System.out.println(itr.next().getWord()); //prints null every time
}
Response - это класс со следующими переменными-членами (с геттерами и сеттерами):
private String status;
private String usage;
private String language;
private Collection<Keyword> keywords;
Ключевое слово - это класс со следующими переменными-членами (с геттерами и сеттерами):
private String word;
private String relevance;
JSON выглядит так:
{
"status": "OK",
"usage": "By accessing AlchemyAPI or using information generated by AlchemyAPI, you are agreeing to be bound by the AlchemyAPI Terms of Use: http://www.alchemyapi.com/company/terms.html",
"url": "http://www.theage.com.au/world/aussie-trying-to-make-a-difference-gunned-down-20110510-1egnv.html",
"language": "english",
"keywords": [
{
"text": "Mr McNichols",
"relevance": "0.99441"
},
{
"text": "Ms Benton",
"relevance": "0.392337"
},
{
"text": "Detroit",
"relevance": "0.363931"
},
{
"text": "Crocodile Hunter",
"relevance": "0.350197"
}
]
}
Проблема в том, что Коллекция ключевых слов возвращает нулевые значения - хотя, похоже, она имеет правильный размер, который является положительным.