Здравствуйте, я пытаюсь отобразить данные json из URL — адреса в listview. Однако ничего не отображается

#java #android #json

Вопрос:

URL-адрес

частная статическая строка JSON_URL =»https://run.mocky.io/v3/aff3f637-d04f-45c0-b002-09be1a143784″;

 ArrayList<HashMap<String,String>> friendsList;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    friendsList= new ArrayList<>();
    lv = findViewById(R.id.listview);

    GetData getData= new GetData();
    getData.execute();

}
 

Получение данных

общедоступный класс getData расширяет AsyncTask<Строка, Строка, Строка>{

     @Override
    protected String doInBackground(String... strings) {
        String current = "";

        try {
            URL url;
            HttpURLConnection urlConnection = null;

            try {
                url = new URL(JSON_URL);
                urlConnection = (HttpURLConnection) url.openConnection();


                InputStream in = urlConnection.getInputStream();
                InputStreamReader isr = new InputStreamReader(in);

                int data = isr.read();

                while (data != -1) {

                    current  = (char) data;
                    data = isr.read();
                }
                return current;
            } catch (MalformedURLException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (urlConnection != null) {
                    urlConnection.disconnect();
                }
            }
        } catch (Exception e){
            e.printStackTrace();
        }
          return current;
    }
 

Отображение данных

     @Override
    protected void onPostExecute(String s) {
        try{
            JSONObject jsonObject= new JSONObject(s);
            JSONArray jsonArray = jsonObject.getJSONArray("Friends"); //name of array

            for(int i = 0; i <jsonArray.length();i  )
            {
                JSONObject jsonObject1 = jsonArray.getJSONObject(i);

                namey=jsonObject.getString("name");
                age= jsonObject1.getString("age");


                //Hashmap

                HashMap<String, String> friends = new HashMap<>();

                friends.put("name",namey);
                friends.put("age", age);

                friendsList.add(friends);
            }
        } catch (JSONException e) {
            e.printStackTrace();
        }

        //Displaying the results
        ListAdapter adapter = new SimpleAdapter(
                MainActivity.this,
                friendsList,
                R.layout.row_layout,
                new String[]{"name","age"},
                new int[]{R.id.textView, R.id.textView2});

        lv.setAdapter(adapter);

    }
}
 

}

Он ничего не отображает, и я считаю, что это как-то связано с URL-адресом, но я не совсем уверен, поэтому, пожалуйста, помогите и заранее благодарю вас

Комментарии:

1. String s Вы проверили значение переменной s? Тост() это, чтобы увидеть. Запишите это в журнал, чтобы знать. Она пуста() ? Вы не проверяете наличие пустого(). Он будет пуст, если вы поймали исключение в doInBackground();

2. Ваш URL-адрес в браузере: SyntaxError: JSON.parse: unexpected non-whitespace character after JSON data at line 26 column 1 of the JSON data

3. catch (JSONException e) { e.printStackTrace(); } Самое меньшее, что вы могли бы сделать, — это отобразить там тост (), чтобы проинформировать пользователя. Вы заглядывали в журнал, не было ли там подвоха?

4. Привет, Атанас — Будьте осторожны с форматированием при публикации, пожалуйста. Кроме того, держите свое название по существу. Я попытался отредактировать, чтобы исправить форматирование кода, но не смог, так как это предупреждает, что вопрос касается почти всего кода. Лучше всего выполнить базовые проверки, как предложено в комментариях, перед публикацией. Кроме того, вы можете сказать в своем посте, что вы уже пытались сделать для устранения неполадок 🙂

Ответ №1:

введите описание изображения здесь

Твой моки ДЖСОН из https://run.mocky.io/v3/aff3f637-d04f-45c0-b002-09be1a143784 неправильный формат, вам нужно удалить последний символ