Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
#1

запутался с JSON - Программирование Android

18.05.2016, 11:03. Просмотров 70. Ответов 3
Метки нет (Все метки)

Есть сайт с JSON такого вида
Java
1
[{"city_id":6,"country_id":1,"title":"Актобе","name":"aktobe"},{"city_id":2,"country_id":1,"title":"Алматы","name":"almaty"},{"city_id":1,"country_id":1,"title":"Астана","name":"astana"},{"city_id":5,"country_id":1,"title":"Атырау","name":"atirau"},{"city_id":3,"country_id":1,"title":"Караганда","name":"karaganda"},{"city_id":7,"country_id":1,"title":"Кокшетау","name":"kokshetau"},{"city_id":8,"country_id":1,"title":"Павлодар","name":"pavlodar"},{"city_id":9,"country_id":1,"title":"Петропавловск","name":"petropavlovsk"},{"city_id":4,"country_id":1,"title":"Шымкент","name":"shimkent"}]
Я из того что помнил про его обработку собрал вот такой код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
class TestEmailTask extends AsyncTask<String, String, String> {
 
        String JSON_STRING;
        String Json_url= "/*приятель просил не афишировать */";
 
        @Override
        protected String doInBackground(String... params) {
 
            try {
                URL url = new URL(Json_url);
                HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();
                InputStream inputStream = httpURLConnection.getInputStream();
                BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
                StringBuilder stringBuilder = new StringBuilder();
                while ((JSON_STRING = bufferedReader.readLine())!=null)
                {
                    stringBuilder.append(JSON_STRING);
                }
                bufferedReader.close();
                inputStream.close();
                httpURLConnection.disconnect();
                return stringBuilder.toString().trim();
            }
            catch (IOException e)
            {
                e.printStackTrace();
                Log.e("myLog", "Error " + e.toString());
            }
            return null;
        }
 
        @Override
        protected void onPostExecute(String result) {
            try {
                JSONObject json = new JSONObject(result);
                JSONArray urls = json.getJSONArray("");
 
               
 
                for (int i = 0; i < urls.length(); i++) {
 
                    HashMap<String, Object> hm;
                    hm = new HashMap<String, Object>();
                    hm.put(TITLE, urls.getJSONObject(i).getString("title").toString());
                    hm.put(IMAGE, urls.getJSONObject(i).getString("name").toString());
                    myBooks.add(hm);
                    SimpleAdapter adapter = new SimpleAdapter(MainActivity.this, myBooks, R.layout.list,
                            new String[] { TITLE, NAME, }, new int[] { R.id.text1, R.id.text2 });
                    listView.setAdapter(adapter);
                    listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
                }
            } catch (JSONException e) {
                Log.e("log_tag", "Error parsing data " + e.toString());
            }
 
            dialog.dismiss();
            super.onPostExecute(result);
        }
 
        @Override
        protected void onPreExecute() {
 
            dialog = new ProgressDialog(MainActivity.this);
            dialog.setCancelable(true);
            dialog.show();
            super.onPreExecute();
        }
    }
Но он выводит ошибку
Код
05-18 13:50:06.499 22558-22558/kz.ayn.test E/log_tag: Error parsing data org.json.JSONException: Value [{"city_id":6,"title":"Актобе","name":"aktobe","country_id":1},{"city_id":2,"title":"Алматы","name":"almaty","country_id":1},{"city_id":1,"title":"Астана","name":"astana","country_id":1},{"city_id":5,"title":"Атырау","name":"atirau","country_id":1},{"city_id":3,"title":"Караганда","name":"karaganda","country_id":1},{"city_id":7,"title":"Кокшетау","name":"kokshetau","country_id":1},{"city_id":8,"title":"Павлодар","name":"pavlodar","country_id":1},{"city_id":9,"title":"Петропавловск","name":"petropavlovsk","country_id":1},{"city_id":4,"title":"Шымкент","name":"shimkent","country_id":1}] of type org.json.JSONArray cannot be converted to JSONObject
На подскажите в чем проблема?
К программированию не подходил больше года (и так знал не много, а уже позабыл многое)

Добавлено через 5 минут
пробывал так
Java
1
2
3
4
5
6
 JSONArray urls = new JSONArray(result);
 
                for (int i = 0; i < urls.length(); i++) {
                    String proba = String.valueOf(urls.getJSONArray(0));
                    JSONObject urls2 = new JSONObject(String.valueOf(proba));
...
Но получается ошибка
Код
05-18 14:02:18.357 2373-2373/kz.ayn.test E/log_tag: Error parsing data org.json.JSONException: Value {"city_id":6,"title":"Актобе","name":"aktobe","country_id":1} at 0 of type org.json.JSONObject cannot be converted to JSONArray
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
18.05.2016, 11:03     запутался с JSON
Посмотрите здесь:

Ошибка - Errororg.json.JSONExceprion: Value bd.json of type java.lang.String cannot be converted to JSONObject - Программирование Android
Здравствуйте! Есть база данных bd.json, которая находится в проекте в папке assets. Вот содержимое базы данных; { &quot;name&quot;:...

Запутался в фрагментах и транзакциях с GoogleMaps? - Программирование Android
есть активити, в которой по кнопке меняются фрагменты (их пока всего два), один из этих фрагментов карта Гугл, когда по кнопке меняю на...

JSON - Программирование Android
В продолжение моей борьбы с json, поделитесь полезными ссылками для изучения, буду очень признателен. И вот вопрос, у меня есть массив...

Обработка Json - Программирование Android
Всем доброго времени суток! Подскажите, пожалуйста, что в моем коде не так: public ArrayList&lt;String&gt; parseCategory(String input) { ...

Парсинг JSON - Программирование Android
Доброй ночи! Есть задача распарсить JSON не зная изначально сколько и чего там находится, а так же не зная ни имен ни другой инфы, кроме...

Чтение из json - Программирование Android
Есть файл json: {&quot;animals&quot;:} класс animals: public class Animals { TextView ans; Image pic; } в xml активности...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Pablito
2459 / 1904 / 591
Регистрация: 12.05.2014
Сообщений: 6,712
Завершенные тесты: 1
18.05.2016, 11:13     запутался с JSON #2
проще парсить другой либой
XML
1
    compile 'com.google.code.gson:gson:2.6.2'
тогда код, который парсит строку в объект, выглядт так
Java
1
2
                String json = "[{"city_id":6,"country_id":1,"title":"Актобе","name":"aktobe"},{"city_id":2,"country_id":1,"title":"Алматы","name":"almaty"},{"city_id":1,"country_id":1,"title":"Астана","name":"astana"},{"city_id":5,"country_id":1,"title":"Атырау","name":"atirau"},{"city_id":3,"country_id":1,"title":"Караганда","name":"karaganda"},{"city_id":7,"country_id":1,"title":"Кокшетау","name":"kokshetau"},{"city_id":8,"country_id":1,"title":"Павлодар","name":"pavlodar"},{"city_id":9,"country_id":1,"title":"Петропавловск","name":"petropavlovsk"},{"city_id":4,"country_id":1,"title":"Шымкент","name":"shimkent"}]";
                final ArrayList<MyResponse> list = new Gson().fromJson(json, new TypeToken<List<MyResponse>>(){}.getType());
и где-то создаем класс-модельку
Java
1
2
3
4
5
6
class MyResponse {
    public String city_id;
    public String title;
    public String name;
    public String country_id;
}
в list будет список этох объектов с нужными полями
bako-95
9 / 9 / 4
Регистрация: 27.04.2015
Сообщений: 112
18.05.2016, 11:16  [ТС]     запутался с JSON #3
Паблито, спасибо за совет, попробуем эти библиотеку
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
18.05.2016, 11:19     запутался с JSON
Еще ссылки по теме:

Json в массив - Программирование Android
Пишу запросы к api сервера. Хочу сделать так что бы класс обрабатывающий запрос возвращал информацию не в json-объектах, а в java-массиве...

Неверный JSON - Программирование Android
Подскажите пожалуйста споткнулся вроде на ровном месте exit(json_encode($newArray)); Так выдаю данные для приложения ...

C JSON в ListView - Программирование Android
Здравствуйте! Есть файл data.json. Он находится в приложении. Его содержимое; { &quot;name&quot;: &quot;Антон&quot;, &quot;name&quot;: &quot;Анна&quot;, &quot;name&quot;:...

Создать JSON - Программирование Android
Здравствуйте! Как сделать, чтобы при установки или при включении приложения создавался файл формата JSON с данными (список), которые я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Pablito
2459 / 1904 / 591
Регистрация: 12.05.2014
Сообщений: 6,712
Завершенные тесты: 1
18.05.2016, 11:19     запутался с JSON #4
а еще получать ответ с сервера намного удобнее с помощью
http://square.github.io/okhttp/
boilerplate кода нет, читается легко, ненадо писать циклы, которые собирают строки с одну
синхронные - асинхронные запросы, слушатели на fail и так далее
Yandex
Объявления
18.05.2016, 11:19     запутался с JSON
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru