Потребовалось мне недавно распарсить небольшой JSON, взятый со стороннего сайта. Естественно java и естественно не хотелось заморачиваться больше необходимого. И я пошел в интернеты искать что-то, что устроит меня по обоим этим параметрам. Первая строчка при поиске через Google – json-simple. Чтобы не противоречить самому себе и не усложнять задачу берем его и подключаем к проекту.
В кратком виде документ, получаемый мной от сервера выглядит так:
{
"current_observation": {
"weather":"Partly Cloudy",
"temp_c":14,
"relative_humidity":"72%",
}
}
Все просто и понятно.
Корнем всех добр json-simple является класс JSONParser, являющийся, как не трудно догадаться, парсером JSON документа.
JSONParser jsonParser = new JSONParser();
Теперь парсим JSON методом parse (оригинально, не правда ли?) и сохраняем его в json-simple объект JSONObject.
JSONObject jsonObject = (JSONObject)jsonParser.parse(здесь_ваш_json);
Ищем вхождение current_observation
JSONObject jsonObserv = (JSONObject)jsonObject.get("current_observation");
и получаем такой же объект но только не для корня JSON, а уже для него.
Ну, а далее все тем же методом get() получаем значения ключей:
Double temperature = Double.parseDouble((jsonObserv.get("temp_c").toString()));
String weatherType = jsonObserv.get("weather").toString();
Integer humidity = Integer.parseInt(jsonObserv.get("relative_humidity").toString().replace("%", ""));
Вот, собственно, и все.
Конечно, это был самый простой способ парсинга. Можно было делать это через Map’ы с итераторами, но, как вы помните, я искал именно простоты и удобства на неизменяемых по структуре документах.
Если захочется посмотреть на примеры, то их есть у гугла.
Пользуйтесь на здоровье.