You need to get the following data and save it in arrays of strings / numbers (not just output to the console):

first_name last_name id 

My non-working code: (no need to say that I did not declare an array of strings, etc., I just tried to output line by line) indicate the error and what needs to be done.

 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; import java.net.URLConnection; import org.json.JSONException; import org.json.JSONObject; public class ListFriend{ public void getFriendList() throws IOException, JSONException{ StringBuilder sb = new StringBuilder(); URL pageURL = new URL("https://api.vk.com/method/friends.get?user_id=275388012&order=hints&fields=nickname&v=5.62"); URLConnection uc = pageURL.openConnection(); try (BufferedReader br = new BufferedReader( new InputStreamReader( uc.getInputStream()))) { String inputLine; while ((inputLine = br.readLine()) != null) { sb.append(inputLine); } } System.out.println(sb); System.out.println(); razbienie(sb); } public void razbienie(StringBuilder sb) throws JSONException { JSONObject obj = new JSONObject(sb); String first_name = obj.getString("first_name"); String last_name = obj.getString("last_name"); int id = obj.getString("id"); System.out.println("first_name = " + first_name); System.out.println("last name = " + last_name); } } 

JSON that is issued when requesting a server

 {"response":{"count":35,"items":[{"id":58853308,"first_name":"Екатерина","last_name":"Романенко","nickname":"","hidden":1}, {"id":92384521,"first_name":"Блум","last_name":"Каллен","nickname":""}, {"id":141630662,"first_name":"Євгеній","last_name":"Нікітін","nickname":""}, {"id":158114945,"first_name":"Антон","last_name":"Яремич","nickname":"","hidden":1}, {"id":167752831,"first_name":"Марат","last_name":"Зимнуров","nickname":"Фаридович"}, {"id":178618907,"first_name":"Андрей","last_name":"Громов","nickname":"๖ۣۣۜ"}, {"id":232515930,"first_name":"Учиха","last_name":"Саске","nickname":"———————————————————————————————— Sasuke Uchiha うちはサスケ————————————————————————————————"}, {"id":242936466,"first_name":"Настя","last_name":"Кот","nickname":""}, {"id":245151135,"first_name":"Клара","last_name":"Освальд","nickname":"Освин"}, {"id":248699422,"first_name":"Vanessa","last_name":"Howard","nickname":""}, {"id":252970419,"first_name":"Feliks","last_name":"Gallagher","nickname":""}, {"id":266353969,"first_name":"Яна","last_name":"Тян","nickname":""}, {"id":272587569,"first_name":"Draco","last_name":"Malfoy","nickname":"ㅤ✕ㅤ"}, {"id":281532057,"first_name":"Мира","last_name":"Котова","nickname":"","hidden":1}, {"id":286130542,"first_name":"Robin","last_name":"Taurus","nickname":""}, {"id":296629802,"first_name":"Илья","last_name":"Пак","nickname":""}, {"id":298724313,"first_name":"Роза","last_name":"Тайлер","nickname":""}, {"id":300437436,"first_name":"Мария","last_name":"Моторина","nickname":"","hidden":1}, {"id":301459494,"first_name":"Анастасия","last_name":"Шпагина","nickname":"","hidden":1}, {"id":304482617,"first_name":"Карен","last_name":"Маргарян","nickname":""},{"id":306697175,"first_name":"Sasori","last_name":"Akasuna","nickname":"","hidden":1}, {"id":311020741,"first_name":"Ашия","last_name":"Широ","nickname":""}, {"id":316797280,"first_name":"Катя","last_name":"Лис","deactivated":"deleted"},{"id":317117522,"first_name":"Liam","last_name":"Miles","nickname":""}, {"id":319762242,"first_name":"Виктория","last_name":"Перепечай","nickname":""},{"id":322714403,"first_name":"Anya","last_name":"Melnuk","nickname":""}, {"id":326762691,"first_name":"Бог","last_name":"Ято","nickname":""}, {"id":333275627,"first_name":"Yamada","last_name":"Ryuu","nickname":""}, {"id":335276627,"first_name":"Рита","last_name":"Шульц","nickname":""},{"id":335382804,"first_name":"Фокси","last_name":"Фазбер","nickname":""}, {"id":336884195,"first_name":"Наталия","last_name":"Линдеманн","nickname":""},{"id":342170161,"first_name":"Ики","last_name":"Хиёри","deactivated":"deleted"}, {"id":348565801,"first_name":"Ким","last_name":"Ён-Лин","nickname":""}, {"id":349657939,"first_name":"Саша","last_name":"Агафонова","nickname":""}, {"id":350555892,"first_name":"Слава","last_name":"Моисеев","nickname":""}]}} 

Errors:

  Exception in thread "main" org.json.JSONException: JSONObject["first_name"] not found. at org.json.JSONObject.get(JSONObject.java:498) at org.json.JSONObject.getString(JSONObject.java:669) at vkmail.ListFriend.razbienie(ListFriend.java:34) at vkmail.ListFriend.getFriendList(ListFriend.java:28) at vkmail.Main.main(Main.java:16) C:\NetBeans\Cache\8.2\executor-snippets\run.xml:53: Java returned: 1 СБОРКА ЗАВЕРШЕНА СО СБОЕМ (общее время: 1 секунда) 
  • one
    Add an example of json as text please. - Kirill Malyshev
  • @ Kirill Malyshev in the screenshot after all added - Marat Zimnurov
  • one
    So it would be much easier to debug. - Kirill Malyshev
  • @ Kirill Malyshev attached - Marat Zimnurov
  • @KirillMalyshev if something is not clear, look at the screen, how it looks in the compiler. Also the number of lines and the number of names and id can be anything, so the array implementation will be through ArrayList - Marat Zimnurov

1 answer 1

  1. You must pass a string (String) to the JSONObject constructor, not a StringBuilder, i.e. new JSONObject (sb.toString ()), otherwise the constructor is JSONObject (Object);
  2. Next you need to get the object by the key "response"
  3. then get an array from it using the "items" key
  4. and then iterate over this object

     JSONObject jsonObject = new JSONObject(sb.toString()); JSONArray jsonArray = jsonObject .getJSONObject("response").getJSONArray("items"); for (int i = 0; i < jsonArray.length(); i++) { JSONObject obj = jsonArray.getJSONObject(i); String first_name = obj.getString("first_name"); String last_name = obj.getString("last_name"); int id = obj.getInt("id"); } 
  • how to access this array? just a little familiar with JSON - Marat Zimnurov
  • everything works fine) appeal as usual :) thanks for the help) - Marat Zimnurov