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

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

Войти
Регистрация
Восстановить пароль
 
element111
0 / 0 / 0
Регистрация: 16.12.2014
Сообщений: 54
#1

Как правильно распарсить Json? - Программирование Android

09.02.2016, 22:26. Просмотров 288. Ответов 2

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
protected String doInBackground(String... args) {
        // Будет хранить параметры
        List<NameValuePair> params = new ArrayList<>();
                // получаем JSON строк с URL
        JSONObject json = jParser.makeHttpRequest("тут ссылка на сайт", "GET", params);
 
 
 
        try {
 
                // Получаем масив из Продуктов
                dolzno = json.getJSONArray("dolzno");
 
 
                // перебор всех продуктов
                for (int i = 0; i < dolzno.length(); i++) {
                    JSONObject c = dolzno.getJSONObject(i);
 
                    // Сохраняем каждый json елемент в переменную
                    String id = c.getString(TAG_ID);
 
 
                    // Создаем новый HashMap
                    HashMap<String, String> map = new HashMap<String, String>();
 
                    // добавляем каждый елемент в HashMap ключ => значение
                    map.put(TAG_ID, id);
 
 
                    // добавляем HashList в ArrayList
                    productsList.add(map);
                }
 
 
 
        } catch (JSONException e) {
            e.printStackTrace();
        }
 
        return null;
    }
Сам json-ответ корректен вроде:
JSON
1
{"dolzno":[{"_id":"1"},{"_id":"2"},{"_id":"4"}],"spec":[{"_id":"1"},{"_id":"2"},{"_id":"3"}],"otdel":[{"_id":"1"},{"_id":"2"},{"_id":"3"}]}
Он получается с url.

Насколько я понимаю, он содержит 3 объекта - dolzno, otdel, spec. Вот я и хочу каждый из этих обьектов запихать в arraylist. Однако программа почему-то не видит эти обьекты. (Ввожу их по названию, в примере dolzno - название первого обьекта)

После преобразования я планировал arraylist привязать к спиннеру.
В чем ошибаюсь?

Добавлено через 32 минуты
Ниже код php
PHP
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
<?php
$res = array();
$response = array();
$response1 = array();
$response2 = array();
 
// include db connect class
require_once __DIR__ . '/db_connect.php';
 
// connecting to db
$db = new DB_CONNECT();
 
// get all products from products table
$result = mysql_query("SELECT * FROM dolz");
$result1 = mysql_query("SELECT * FROM otdel");
$result2 = mysql_query("SELECT * FROM spec");
 
if (mysql_num_rows($result) > 0 and mysql_num_rows($result1) > 0) {
$response["dolzno"] = array();
$response1["otdel"] = array();
$response2["spec"] = array();
 
while ($row = mysql_fetch_array($result)) {
$product = array();
$product["_id"] = $row["_id"];
 
array_push($response["dolzno"], $product);
$res=array_merge((array)$res, (array)$response);
}
while ($row = mysql_fetch_array($result2)) {
$product2 = array();
$product2["_id"] = $row["_id"];
 
array_push($response2["spec"], $product2);
$res=array_merge((array)$res, (array)$response2);
}
while ($row = mysql_fetch_array($result1)) {
$product1 = array();
$product1["_id"] = $row["_id"];
 
array_push($response1["otdel"], $product1);
$res=array_merge((array)$res, (array)$response1);
}
 
echo json_encode($res);
 
} else {
$response1["success"] = 0;
$response1["message"] = "No products found";
 
echo json_encode($response1);
}
 
?>
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.02.2016, 22:26
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Как правильно распарсить Json? (Программирование Android):

Подскажите как правильно распарсить json - Программирование Android
Доброго дня. Никогда не сталкивался с вопросом, своими силами на примерах из гугла не получилось. Можете объяснить как распарсить json...

Как распарсить такой JSON - Программирование Android
{&quot;response&quot;:} Как распарарсить такой JSon нужно выделить из массива первое число а дальше все uid и body?? Можете подсказать? ...

Как распарсить JSON c Вконтакте API - Программирование Android
Подскажите как распарсить JSON c Вконтакте API. Вот вид JSON: { &quot;response&quot;: , &quot;comments&quot;: { ...

Как распарсить Json-ответ Android приложении? - Программирование Android
Добрый день! Android приложение получает ответ от сервера в формате Json. Есть 2 варианта ответа : 1. 2. Какой лучше...

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

Как распарсить страницу и записать данные в ListView? - Программирование Android
Добрый день , Киборги! Прошлая тема ,созданная мною в данном разделе , касалась вопроса WebView'a ,но теперь все стало предельно ясно. ...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
YuraAAA
1571 / 1313 / 270
Регистрация: 25.10.2009
Сообщений: 3,432
Записей в блоге: 2
10.02.2016, 12:06 #2
element111, а какая ошибка?
Pablito
2471 / 1916 / 595
Регистрация: 12.05.2014
Сообщений: 6,741
Завершенные тесты: 1
10.02.2016, 12:16 #3
Java
1
2
3
                String str = "{"dolzno":[{"_id":"1"},{"_id":"2"},{"_id":"4"}],"spec":[{"_id":"1"},{"_id":"2"},{"_id":"3"}],"otdel":[{"_id":"1"},{"_id":"2"},{"_id":"3"}]}";
                Gson gson = new Gson();
                MyResponse response = gson.fromJson(str, MyResponse.class);
парсится с помощью библиотеки gson
подключается так
XML
1
compile 'com.google.code.gson:gson:1.7.2'
сам класс MyResponse
Кликните здесь для просмотра всего текста
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
public class MyResponse {
    private Spec[] spec;
    private Dolzno[] dolzno;
    private Otdel[] otdel;
 
    public Spec[] getSpec() {
        return spec;
    }
 
    public void setSpec(Spec[] spec) {
        this.spec = spec;
    }
 
    public Dolzno[] getDolzno() {
        return dolzno;
    }
 
    public void setDolzno(Dolzno[] dolzno) {
        this.dolzno = dolzno;
    }
 
    public Otdel[] getOtdel() {
        return otdel;
    }
 
    public void setOtdel(Otdel[] otdel) {
        this.otdel = otdel;
    }
 
    static class Otdel {
        private String _id;
 
        public String get_id() {
            return _id;
        }
 
        public void set_id(String _id) {
            this._id = _id;
        }
    }
 
    static class Spec {
        private String _id;
 
        public String get_id() {
            return _id;
        }
 
        public void set_id(String _id) {
            this._id = _id;
        }
    }
 
    static class Dolzno {
        private String _id;
 
        public String get_id() {
            return _id;
        }
 
        public void set_id(String _id) {
            this._id = _id;
        }
    }
}
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.02.2016, 12:16
Привет! Вот еще темы с ответами:

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

Как распарсить svg path и по нему нарисовать во View кривую - Программирование Android
Нужно написать приложение которое на входе принимает svg path, к примеру...

GET HTTP запросы. Как распарсить строку, получив все значения, разделенные запятыми - Программирование Android
Всем привет. Пишу софтину, которая управляет освещением в комнате. GET запрос я научился делать и получаю результат. Но в результате...

Как перевести с gson на json код - Программирование Android
Имеется код, пересылка осуществляется в формате json, а обработка строк стандартной библиотекой gson. Помогите, пожалуйста, перевести код...


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

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

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