我的问题很简单。请查看以下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可能有问题吗?
get
方法在链式调用中不安全。参见文档@return
:
与名称匹配的成员。如果不存在这样的成员,则为Null。
因此,您需要检查它是否不是null
:
JsonElement q3Element = qualiTimes.get("Q3");
String Q3 = null;
if (q3Element != null) {
Q3 = q3Element.getAsString();
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句