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

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

Войти
Регистрация
Восстановить пароль
 
Алексей228
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 11
#1

Обработка Json - Программирование Android

25.02.2015, 17:22. Просмотров 686. Ответов 6
Метки нет (Все метки)

Всем доброго времени суток! Подскажите, пожалуйста, что в моем коде не так:
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
public ArrayList<String> parseCategory(String input)
    {
        ArrayList<String> jsonlist=new ArrayList<String>(); 
  if(input!= null){
             try {
                  
 
                   JSONArray jArray = new JSONArray(input);
                
                   for(int i=0;i<jArray.length();i++) 
                      {
                         JSONObject json_data = jArray.getJSONObject(i);
                         String  id = json_data.getString("id");
                         String name =json_data.getString("name");
                             jsonlist.add(id+": "+name);
                     }
                   
        
                   return jsonlist;
              } catch (JSONException e) {
                  this.s=e.getMessage();
                  }
                      
             } return jsonlist;}
Возникает исключение: value of type java.lang.string cannot be converted to jsonarray

Перед этим input прогоняется через этот кусок кода:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
String result = "";
         try{
                BufferedReader reader = new BufferedReader(new InputStreamReader(is,"UTF-8"),8);
                StringBuilder sb = new StringBuilder();
                String line = null;
                while ((line = reader.readLine()) != null) {
                    sb.append(line + "\n");
                }
                is.close();
                result = sb.toString();
            }catch(Exception e){
                
            }
         return result;
    
    }
Ответ от сервера следующий: [{"id":"1","name":"Элемент 1"},{"id":"2","name":"Элемент 2"}]
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
25.02.2015, 17:22
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Обработка Json (Программирование Android):

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

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

JSON parser - Программирование Android
Добрый вечер! Прошу помочь с проблемой, делаю парсинг .JSON файла , но не могу корректно поместить такую структуру данный, пытаюсь в ...

Json djangorestframework - Программирование Android
Здравствуйте есть сайт с которого нужно получить json 52.24.128.34:8000/api/tasks/?format=json json вида в примере по использованию...

простенький json - Программирование Android
на сервере имеется код: if ($id&gt;0) {&quot;data&quot;:} else {&quot;data&quot;:} Запрос с мобильного должен идти в виде GET запроса, а результат должен...

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

6
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
25.02.2015, 17:30 #2
Цитата Сообщение от Алексей228 Посмотреть сообщение
Перед этим input прогоняется через этот кусок кода:
а зачем?
0
Алексей228
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 11
25.02.2015, 17:55  [ТС] #3
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
@Override
            protected void onPostExecute(Void result) 
            { 
              super.onPostExecute(result);           
             
              try {
                HttpEntity entity = response.getEntity(); 
                InputStream is = entity.getContent();
                str=inputStreamToString.StreamToString(is);
                    is.close();
                
                  } 
                catch (IllegalStateException e) {tx.setText(e.getMessage());} 
                catch (IOException e) {tx.setText(e.getMessage());}
                catch(Exception e){tx.setText(e.getMessage());}
            }
Здесь я получаю ответ от сервера, пропускаю через функцию StreamToString(), которая была описана выше.
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
25.02.2015, 18:01 #4
Алексей228, мне кажется в этом проблема. Попробуйте так:

Java
1
2
HttpEntity entity = response.getEntity();
str = org.apache.http.util.EntityUtils.toString(entity, "UTF-8");
0
Алексей228
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 11
25.02.2015, 18:15  [ТС] #5
не помогло((
0
YuraAAA
1577 / 1318 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 2
25.02.2015, 18:22 #6
Цитата Сообщение от Алексей228 Посмотреть сообщение
public ArrayList<String> parseCategory(String input)
после этого напишите
Java
1
Log.d("Json parser", "" + input);
и скиньте сюда, что же там за строка такая. И покажите версию кода с EntityUtils, как Вы поменяли.
P.S. по коду всё чётко.
0
Алексей228
0 / 0 / 0
Регистрация: 15.05.2014
Сообщений: 11
25.02.2015, 19:25  [ТС] #7
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
HttpEntity entity = response.getEntity(); 
str = org.apache.http.util.EntityUtils.toString(entity, "UTF-8");
parseCategory(str);
 
-------------------------
public ArrayList<String> parseCategory(String input)
    {
        ArrayList<String> jsonlist=new ArrayList<String>();  
        
         if(input!= null){
             try {
                  
            
                   JSONArray jArray = new JSONArray(input);
                   for(int i=0;i<jArray.length();i++) 
                      {
                     JSONObject json_data = jArray.getJSONObject(i);
                    String  id = json_data.getString("id");
                    String name =json_data.getString("name");
                         jsonlist.add(id+"* "+name);
                     }
                   
        
                   return jsonlist;
              } catch (JSONException e) {
                   s=e.getMessage();
                  }
                      
             } return jsonlist;
        
    }
input: [{"id":"1","name":"Блеск"},{"id":"2","name":"Дакар"}]

Добавлено через 48 минут
если написать так, то все работает нормально:
JSONArray jArray = new JSONArray("[{'id':'1','name':'Блеск'},{'id':'2','name':'Дакар'}]");
0
25.02.2015, 19:25
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
25.02.2015, 19:25
Привет! Вот еще темы с ответами:

Json Parsing - Программирование Android
Здравствуйте.я попытаться разобрать JSON и показать элемент в listview.Программа работает, но я хочу показать все элементы на нажатие...

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

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

Массив из json - Программирование Android
С сервера приходит json в таком формате Array А как сделать массив строк? Т.е. чтобы получилось так String mas =...


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

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

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