Jestem nowym programistą Java pochodzącym z tła w języku Python. Mam dane pogodowe, które są gromadzone/zwracane jako JSON z zagnieżdżonymi kluczami i nie rozumiem, jak wyciągnąć wartości w tej sytuacji. Na pewno zadawano mi to pytanie wcześniej, ale przysięgam, że bardzo googlowałem i nie mogę znaleźć odpowiedzi. W tej chwili używam json-simple, ale próbowałem przejść na Jacksona i nadal nie mogłem wymyślić, jak to zrobić. Ponieważ Jackson/Gson wydają się być najczęściej używanymi bibliotekami, chciałbym zobaczyć przykład używając jednej z tych bibliotek. Poniżej znajduje się próbka danych, a następnie kod, który napisałem do tej pory.Wartość odczytu zagnieżdżonego klucza w JSONie z Javą (Jackson)
{
"response": {
"features": {
"history": 1
}
},
"history": {
"date": {
"pretty": "April 13, 2010",
"year": "2010",
"mon": "04",
"mday": "13",
"hour": "12",
"min": "00",
"tzname": "America/Los_Angeles"
},
...
}
}
Główną funkcją
public class Tester {
public static void main(String args[]) throws MalformedURLException, IOException, ParseException {
WundergroundAPI wu = new WundergroundAPI("*******60fedd095");
JSONObject json = wu.historical("San_Francisco", "CA", "20100413");
System.out.println(json.toString());
System.out.println();
//This only returns 1 level. Further .get() calls throw an exception
System.out.println(json.get("history"));
}
}
Funkcja 'historyczne' wywołuje inną funkcję, która zwraca JSONObject
public static JSONObject readJsonFromUrl(URL url) throws MalformedURLException, IOException, ParseException {
InputStream inputStream = url.openStream();
try {
JSONParser parser = new JSONParser();
BufferedReader buffReader = new BufferedReader(new InputStreamReader(inputStream, Charset.forName("UTF-8")));
String jsonText = readAll(buffReader);
JSONObject json = (JSONObject) parser.parse(jsonText);
return json;
} finally {
inputStream.close();
}
}
możliwy duplikat [Jak analizować JSON w Javie] (http://stackoverflow.com/questions/2591098/how-to-parse-json-in-java) – Bobulous