Я пытаюсь извлечь значения из JSON из URL, представленной ниже, используя GSON Java библиотеки: http://api.wunderground.com/api/b28d047ca410515a/forecast/q/-33.912,151.013.jsonзначение Выписка из Json с помощью Gson
Я успешно использовал код, предоставленный ниже, чтобы извлечь данные из URL ниже: http://api.wunderground.com/api/b28d047ca410515a/conditions/q/-33.912,151.013.json
код:
String url = "http://api.wunderground.com/api/b28d047ca410515a/conditions/q/-33.912,151.013.json";
String url2 = "http://api.wunderground.com/api/b28d047ca410515a/forecast/q/-33.912,151.013.json";
InputStream is = null;
try {
is = new URL(url).openStream();
BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText = readAll(rd);
JsonElement je = new JsonParser().parse(jsonText);
System.out.println("Current Temperature:" + getAtPath(je, "current_observation/temp_c").getAsString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (is != null)
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
Однако я получаю исключение пытается извлечь из URL2 в соответствии с кодом ниже, это, кажется, более complica ted json, чтобы получить значения, любая помощь, пожалуйста?
// below code not working
weather_icon_url = getAtPath(je, "current_observation/icon_url").getAsString();
is = new URL(url2).openStream();
BufferedReader rd2 = new BufferedReader(new InputStreamReader(is, Charset.forName("UTF-8")));
String jsonText2 = readAll(rd2);
JsonElement je2 = new JsonParser().parse(jsonText2);
System.out.println("max Temperature:" + getAtPath(je2, "forecast/simpleforecast/forecastday/high/celsius").getAsString());
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (is != null)
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
код getAtPath:
private static JsonElement getAtPath(JsonElement e, String path) {
JsonElement current = e;
String ss[] = path.split("/");
for (int i = 0; i < ss.length; i++) {
current = current.getAsJsonObject().get(ss[i]);
}
return current;
}
Какое исключение вы получаете? Пожалуйста, предоставьте реализацию 'getAtPath'. – dShringi
Я получаю следующее исключение: вызвано: java.lang.IllegalStateException: не объект JSON: [{"date": {"epoch": "1459152000", "........... – Ossama