#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 неправильный формат, вам нужно удалить последний символ