我发现使用http://ip-api.com/json是获取必要的用户位置细节的一种简单方法。例如,网站的结果是:
{"as":"AS37061 ONECOM","city":"Nairobi","country":"Kenya","countryCode":"KE","isp":"One Communications Ltd","lat":-1.2833,"lon":36.8167,"org":"ONECOM","query":"41.203.219.198","region":"110","regionName":"Nairobi Province","status":"success","timezone":"Africa/Nairobi","zip":""}我一直在用以下代码解析上述Json结果:
String countryCode = null;
String name = null;
if (reader != null) {
try {
reader.setLenient(true);
reader.beginObject();
while (reader.hasNext()) {
switch (reader.nextName()) {
case "countryCode":
countryCode = reader.nextString().toLowerCase();
break;
case "country":
name = reader.nextString();
break;
default:
reader.skipValue();
break;
}
}
reader.endObject();
} catch (IOException e) {
e.printStackTrace();
}
}现在我得到了这个错误:
Fatal Exception: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was END_DOCUMENT at line 1 column 2016
at com.google.gson.stream.JsonReader.beginObject(JsonReader.java:374)
at com.radioafrica.music.fragment.TopTracks.getCountryCode(TopTracks.java:397)
at com.radioafrica.music.fragment.TopTracks.access$1100(TopTracks.java:57)
at com.radioafrica.music.fragment.TopTracks$9.run(TopTracks.java:377)
at java.lang.Thread.run(Thread.java:818)据我所知,这段代码很好,但并不总是起作用。什么地方出问题了?
发布于 2015-11-23 13:45:48
我认为有两个问题:您忘记了代码中的一些内容,以及解析JSON的方式:
reader是否包含空字符串。(当IP返回糟糕的答案或什么都不返回时,可能会发生这种情况)。https://stackoverflow.com/questions/33872247
复制相似问题