Я новый программист Java, исходящий из фона в Python. У меня есть данные о погоде, которые собираются/возвращаются как JSON с вложенными в него ключами, и я не понимаю, как вывести значения в этой ситуации. Я уверен, что этот вопрос был задан раньше, но я клянусь, что у меня много раз, и я не могу найти ответ. Прямо сейчас я использую json-simple, но я попытался переключиться на Джексона и все еще не мог понять, как это сделать. Поскольку Jackson/Gson, по-видимому, являются наиболее часто используемыми библиотеками, мне бы хотелось увидеть пример, используя одну из этих библиотек. Ниже приведен образец данных, за которым следует код, который я написал до сих пор.
{
"response": {
"features": {
"history": 1
}
},
"history": {
"date": {
"pretty": "April 13, 2010",
"year": "2010",
"mon": "04",
"mday": "13",
"hour": "12",
"min": "00",
"tzname": "America/Los_Angeles"
},
...
}
}
Основная функция
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"));
}
}
Функция "историческая" вызывает другую функцию, которая возвращает объект 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();
}
}