Задача: достать все посты из открытой группы.
Json: {"response":{"count":2,"items":[{"id":4,"from_id":-186757790,"owner_id":-186757790,"date":1561831569,"marked_as_ads":0,"post_type":"post","text":"test_2","post_source":{"type":"vk"},"comments":....
Код:
public static void parseCurrentWeatherJson(String resultJson) {
try {
// конвертируем строку с Json в JSONObject для дальнейшего его парсинга
JSONObject weatherJsonObject = (JSONObject) JSONValue.parseWithException(resultJson);
JSONObject response = (JSONObject) weatherJsonObject.get("response");
System.out.println("response: " + response);
// получаем название города, для которого смотрим погоду
System.out.println("count: " + response.get("count"));
JSONArray weatherArray = (JSONArray) weatherJsonObject.get("items");
System.out.println(weatherArray);
// достаем из массива первый элемент
JSONObject weatherData = (JSONObject) weatherArray.get(1);
} catch (org.json.simple.parser.ParseException e) {
e.printStackTrace();
}
}
Вывод: Полученный JSON: {"response":{"count":2,"items":[{"id":4,"from_id":-183957790,"owner_id":-183957790,"date":1561831569,"marked_as_ads":0,"post_type":"post","text":"test_2","post_source":{"type":"vk"},"comments":...
count: 2
null
Exception in thread "main" java.lang.NullPointerException
at jsonParsers.PostsParser.parseCurrentWeatherJson(PostsParser.java:57)
at Main.main(Main.java:28)
count достался без проблем, а вот список он не видет и говорит что он null, в чем может быть проблема ? Заранее спасибо
public static void parseCurrentWeatherJson(String resultJson) {
try {
JSONObject response = (JSONObject) ((JSONObject) JSONValue.parseWithException(resultJson)).get("response");
JSONArray weatherArray = (JSONArray) response.get("items");
JSONObject weatherData = (JSONObject) weatherArray.get(0);
System.out.println(weatherData.keySet()); // you can see all objects keys
System.out.println(weatherData.get("owner_id"));//get value of 'owner_id' for example
} catch (org.json.simple.parser.ParseException e) {
e.printStackTrace();
}
}
Но вообще это плохой подход. Создайте из своих JSON соответсвующие классы и передавайте их сериализатору, чтобы получать из них объекты с инициализированными полями, а не выбирать каждый элемент руками. Помните, как устроена ORM? Есть класс и он соответсвует таблице в БД. Так и тут - есть класс(несколько классов) и он соответствует джейсону. Таким образом получается то, что называется адаптер. Все обращения к апи идут через этот самый адаптер, который формирует запросы и парсит ответы в джава-объекты, а уже ваше приложение работает только с джава кодом и ничего не знает не про какие джейсоны. в противном случае, как минимум, вы размажете обращение к апихе равномерным слоем по всему своему коду и каждое изменение апихи сайта будет болью. Чтобы преобразовать ваш джейсон в класс существует огромное количество онлайн - конвертеров, которые легко справятся с этой задачей. например, этот http://pojo.sodhanalibrary.com
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Какие существуют виды рекламных бордов и как выбрать подходящий?
Например, при разработке и в процессе отладке java кода в idea можно проваливаться во внутреннюю реализацию пакетов и классов JDKЕсть ли что-то...
Интересует такой вопрос есть сайт на Yii2, как сделать так чтобы при клике в форме обратной связи на номер телефона, на клавиатуре телефона...
Начну из далекаПисал калькулятор, и до определённого момента у меня при делении на 0 выводило Error (как и должно было), но почему-то позже это...
Нужно сделать так что бы по клику на картинку, она начинала скачиваться пользователю на компьютерСсылка на картинку приходит от сервера