Мой вопрос очень прост.Пожалуйста, посмотрите на этот JSON-источник: JSON API LINK .
Вот код для анализа QualifyingResults
, чтобы получить эти поля: position, Q1, Q2 и Q3.
private static void parseJsonData(String json) {
JsonElement root = new JsonParser().parse(json);
JsonObject rootObj = root.getAsJsonObject();
JsonArray schedulesPath = rootObj.getAsJsonObject("MRData")
.getAsJsonObject("RaceTable")
.getAsJsonArray("Races");
if (schedulesPath.size() > 0) {
int pos = 1;
JsonArray qualifyingsList = schedulesPath.get(0)
.getAsJsonObject()
.getAsJsonArray("QualifyingResults");
for (JsonElement element : qualifyingsList) {
JsonObject qualiTimes = element.getAsJsonObject();
String driverName = qualiTimes.getAsJsonObject("Driver").get("familyName").getAsString();
String Q1 = qualiTimes.get("Q1").getAsString();
String Q2 = qualiTimes.get("Q2").getAsString();
String Q3 = qualiTimes.get("Q3").getAsString();
Log.d("quali_results", Q1 + " " + Q2 + " " + Q3);
}
}
}
Почему я получаю эту ошибку?
java.lang.NullPointerException: попытка вызвать виртуальный метод 'java.lang.String com.google.gson.JsonElement.getAsString ()' внулевая ссылка на объект
Как вы можете видеть здесь:
position, Q1, Q2 и Q3 являются атрибутамиобъект 0. Почему тогда это вызывает исключение NullPointerException
String Q1 = qualiTimes.get("Q1").getAsString();
String Q2 = qualiTimes.get("Q2").getAsString();
String Q3 = qualiTimes.get("Q3").getAsString();
, а это не так?
String Q1 = qualiTimes.get("position").getAsString();
String Q2 = qualiTimes.get("position").getAsString();
String Q3 = qualiTimes.get("position").getAsString();
Может ли это быть проблемой с GSON?