Гость
Форумы / Android [игнор отключен] [закрыт для гостей] / Парсинг JSON ответа / 12 сообщений из 12, страница 1 из 1
13.12.2015, 18:20
    #39126760
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
Здравствуйте.

Столкнулся с таким интересным (интересно построенным) ответом от сервера в формате JSON (Пример подписки на газету).

Код: xml
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.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
{
  "addressData": [
    {
      "id": 2223,
      "name": "Респ Дагестан, г Махачкала",
      "description": "2мик. 434дом",
      "house_number": "",
      "flat_number": "",
      "created_at": "2015-08-21T13:01:13.000Z",
      "updated_at": "2015-08-21T13:01:13.000Z",
      "user_id": 20,
      "changed_user_id": null,
      "city": "Махачкала"
    },
    {
      "id": 2224,
      "name": "Респ Дагестан, г Махачкала",
      "description": "2мик. 597дом",
      "house_number": "",
      "flat_number": "",
      "created_at": "2015-08-21T13:05:51.000Z",
      "updated_at": "2015-08-21T13:05:51.000Z",
      "user_id": 20,
      "changed_user_id": null,
      "city": "Махачкала"
    },
    {
      "id": 2225,
      "name": "Респ Дагестан, г Махачкала",
      "description": "3 микр. дом 648",
      "house_number": "",
      "flat_number": "",
      "created_at": "2015-09-17T17:52:46.000Z",
      "updated_at": "2015-09-17T17:52:46.000Z",
      "user_id": 20,
      "changed_user_id": null,
      "city": "Махачкала"
    } ],
     "newspaperData": [
    {
      "id": 1,
      "name": ""Ас-Салам" на русском",
      "manufacturer_id": 1,
      "created_at": "2015-06-23T16:21:45.000Z",
      "updated_at": "2015-06-23T16:21:45.000Z"
    },
    {
      "id": 2,
      "name": ""Ас-Салам" на аварском",
      "manufacturer_id": 1,
      "created_at": "2015-06-23T16:21:56.000Z",
      "updated_at": "2015-06-23T16:21:56.000Z"
    },
    {
      "id": 3,
      "name": ""Ас-Салам" на лезгинском",
      "manufacturer_id": 1,
      "created_at": "2015-07-11T12:56:50.000Z",
      "updated_at": "2015-07-11T12:56:50.000Z"
    } ],
 "subscriberData": [
    {
      "id": 1111,
      "name": "Гаджи",
      "surname": "Гаджиев",
      "email": "",
      "description": "",
      "user_id": 20,
      "changed_user_id": null,
      "real_status": null,
      "created_at": "2015-08-21T13:01:13.000Z",
      "updated_at": "2015-08-21T13:01:13.000Z",
      "main_phone": "",
      "additional_phone": "",
      "delete_on": null,
      "where_added": "user",
      "added_user_id": null
    },
    {
      "id": 1112,
      "name": "Шамиль",
      "surname": "Ибрагимов",
      "email": "",
      "description": "",
      "user_id": 20,
      "changed_user_id": null,
      "real_status": null,
      "created_at": "2015-08-21T13:05:51.000Z",
      "updated_at": "2015-08-21T13:05:51.000Z",
      "main_phone": "",
      "additional_phone": "",
      "delete_on": null,
      "where_added": "user",
      "added_user_id": null
    },
    {
      "id": 1113,
      "name": "Арсланали",
      "surname": "Исаев",
      "email": "",
      "description": "",
      "user_id": 20,
      "changed_user_id": null,
      "real_status": null,
      "created_at": "2015-09-17T17:52:46.000Z",
      "updated_at": "2015-09-17T17:52:46.000Z",
      "main_phone": "",
      "additional_phone": "",
      "delete_on": null,
      "where_added": "user",
      "added_user_id": null
    } ],
 "subscriptionPeriodData": [
    {
      "id": 3874,
      "period_start": "01.01.2015",
      "period_finish": "31.12.2015",
      "description": "",
      "created_at": "2015-08-21T13:01:13.000Z",
      "updated_at": "2015-12-04T17:17:06.000Z",
      "subscriber_id": 1111,
      "user_id": 20,
      "address_id": 2223,
      "changed_user_id": null,
      "newspaper_id": 1,
      "price_paid": 0,
      "price": 0
    },
    {
      "id": 3875,
      "period_start": "01.07.2015",
      "period_finish": "31.12.2015",
      "description": "",
      "created_at": "2015-08-21T13:05:51.000Z",
      "updated_at": "2015-12-04T17:17:06.000Z",
      "subscriber_id": 1112,
      "user_id": 20,
      "address_id": 2224,
      "changed_user_id": null,
      "newspaper_id": 2,
      "price_paid": 0,
      "price": 0
    },
    {
      "id": 5172,
      "period_start": "01.07.2015",
      "period_finish": "31.12.2015",
      "description": "",
      "created_at": "2015-09-17T17:52:46.000Z",
      "updated_at": "2015-12-04T17:17:09.000Z",
      "subscriber_id": 1113,
      "user_id": 20,
      "address_id": 2225,
      "changed_user_id": null,
      "newspaper_id": 3,
      "price_paid": 0,
      "price": 0
    } ]
}


На подобие связей таблиц между собой по ID.
Нужно получить: ИмяПодписчика, НаименованеГазеты, АдресДоставкиГазеты.
Главная "таблица" с которой все связано - это subscriptionPeriodData.
У кого какие варианты как "связать по ID" и вывести результат?
...
Рейтинг: 0 / 0
15.12.2015, 08:57
    #39128052
korshun
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
В гугле забанили ?
...
Рейтинг: 0 / 0
15.12.2015, 09:09
    #39128063
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
korshun,

Спасибо, я парсил JSON.
Сталкиваюсь с таким JSON впервые.
Если вы заметили то он построен по принципу связей между таблицами по ID.
Из данного JSON-на мне нужно получить примерно такое:
1) addressData: "name": "Респ Дагестан, г Махачкала", "description": "2мик. 434дом",
2) newspaperData: "name": ""Ас-Салам" на русском",
3) subscriberData: "name": "Гаджи", "surname": "Гаджиев"
4) subscriptionPeriodData: "period_start": "01.07.2015", "period_finish": "31.12.2015"
...
Рейтинг: 0 / 0
15.12.2015, 09:22
    #39128080
Микола Питерский
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
Асланали, так а в чем проблема - если парсить уже пробовал. Если не можешь получить "сложный" результат - то парси и пиши в базу данных, затем при помощи select вытянешь все что тебе будет нужно.
...
Рейтинг: 0 / 0
15.12.2015, 09:24
    #39128084
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
Микола Питерский,

Спасибо вам за ответы. Грузить в базу не буду.
Как вам такое решение?
...
Рейтинг: 0 / 0
15.12.2015, 10:52
    #39128186
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
Сделал так.
"Топорно"?
Код: 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.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
    static String json = " {\n"
            + " 	\"addressData\": [{\n"
            + " 		\"id\": 2223,\n"
            + " 		\"name\": \"Респ Дагестан, г Махачкала\",\n"
            + " 		\"description\": \"2мик. 434дом\",\n"
            + " 		\"house_number\": \"\",\n"
            + " 		\"flat_number\": \"\",\n"
            + " 		\"created_at\": \"2015-08-21T13:01:13.000Z\",\n"
            + " 		\"updated_at\": \"2015-08-21T13:01:13.000Z\",\n"
            + " 		\"user_id\": 20,\n"
            + " 		\"changed_user_id\": null,\n"
            + " 		\"city\": \"Махачкала\"\n"
            + " 	}, {\n"
            + " 		\"id\": 2224,\n"
            + " 		\"name\": \"Респ Дагестан, г Махачкала\",\n"
            + " 		\"description\": \"2мик. 597дом\",\n"
            + " 		\"house_number\": \"\",\n"
            + " 		\"flat_number\": \"\",\n"
            + " 		\"created_at\": \"2015-08-21T13:05:51.000Z\",\n"
            + " 		\"updated_at\": \"2015-08-21T13:05:51.000Z\",\n"
            + " 		\"user_id\": 20,\n"
            + " 		\"changed_user_id\": null,\n"
            + " 		\"city\": \"Махачкала\"\n"
            + " 	}, {\n"
            + " 		\"id\": 2225,\n"
            + " 		\"name\": \"Респ Дагестан, г Махачкала\",\n"
            + " 		\"description\": \"3 микр. дом 648\",\n"
            + " 		\"house_number\": \"\",\n"
            + " 		\"flat_number\": \"\",\n"
            + " 		\"created_at\": \"2015-09-17T17:52:46.000Z\",\n"
            + " 		\"updated_at\": \"2015-09-17T17:52:46.000Z\",\n"
            + " 		\"user_id\": 20,\n"
            + " 		\"changed_user_id\": null,\n"
            + " 		\"city\": \"Махачкала\"\n"
            + " 	}],\n"
            + " 	\"newspaperData\": [{\n"
            + " 		\"id\": 1,\n"
            + " 		\"name\": \"Ас - Салам на русском\",\n"
            + " 		\"manufacturer_id\": 1,\n"
            + " 		\"created_at\": \"2015-06-23T16:21:45.000Z\",\n"
            + " 		\"updated_at\": \"2015-06-23T16:21:45.000Z\"\n"
            + " 	}, {\n"
            + " 		\"id\": 2,\n"
            + " 		\"name\": \"Ас - Салам на аварском\",\n"
            + " 		\"manufacturer_id\": 1,\n"
            + " 		\"created_at\": \"2015-06-23T16:21:56.000Z\",\n"
            + " 		\"updated_at\": \"2015-06-23T16:21:56.000Z\"\n"
            + " 	}, {\n"
            + " 		\"id\": 3,\n"
            + " 		\"name\": \"Ас - Салам на лезгинском\",\n"
            + " 		\"manufacturer_id\": 1,\n"
            + " 		\"created_at\": \"2015-07-11T12:56:50.000Z\",\n"
            + " 		\"updated_at\": \"2015-07-11T12:56:50.000Z\"\n"
            + " 	}],\n"
            + " 	\"subscriberData\": [{\n"
            + " 		\"id\": 1111,\n"
            + " 		\"name\": \"Гаджи\",\n"
            + " 		\"surname\": \"Гаджиев\",\n"
            + " 		\"email\": \"\",\n"
            + " 		\"description\": \"\",\n"
            + " 		\"user_id\": 20,\n"
            + " 		\"changed_user_id\": null,\n"
            + " 		\"real_status\": null,\n"
            + " 		\"created_at\": \"2015-08-21T13:01:13.000Z\",\n"
            + " 		\"updated_at\": \"2015-08-21T13:01:13.000Z\",\n"
            + " 		\"main_phone\": \"\",\n"
            + " 		\"additional_phone\": \"\",\n"
            + " 		\"delete_on\": null,\n"
            + " 		\"where_added\": \"user\",\n"
            + " 		\"added_user_id\": null\n"
            + " 	}, {\n"
            + " 		\"id\": 1112,\n"
            + " 		\"name\": \"Шамиль\",\n"
            + " 		\"surname\": \"Ибрагимов\",\n"
            + " 		\"email\": \"\",\n"
            + " 		\"description\": \"\",\n"
            + " 		\"user_id\": 20,\n"
            + " 		\"changed_user_id\": null,\n"
            + " 		\"real_status\": null,\n"
            + " 		\"created_at\": \"2015-08-21T13:05:51.000Z\",\n"
            + " 		\"updated_at\": \"2015-08-21T13:05:51.000Z\",\n"
            + " 		\"main_phone\": \"\",\n"
            + " 		\"additional_phone\": \"\",\n"
            + " 		\"delete_on\": null,\n"
            + " 		\"where_added\": \"user\",\n"
            + " 		\"added_user_id\": null\n"
            + " 	}, {\n"
            + " 		\"id\": 1113,\n"
            + " 		\"name\": \"Арсланали\",\n"
            + " 		\"surname\": \"Исаев\",\n"
            + " 		\"email\": \"\",\n"
            + " 		\"description\": \"\",\n"
            + " 		\"user_id\": 20,\n"
            + " 		\"changed_user_id\": null,\n"
            + " 		\"real_status\": null,\n"
            + " 		\"created_at\": \"2015-09-17T17:52:46.000Z\",\n"
            + " 		\"updated_at\": \"2015-09-17T17:52:46.000Z\",\n"
            + " 		\"main_phone\": \"\",\n"
            + " 		\"additional_phone\": \"\",\n"
            + " 		\"delete_on\": null,\n"
            + " 		\"where_added\": \"user\",\n"
            + " 		\"added_user_id\": null\n"
            + " 	}],\n"
            + " 	\"subscriptionPeriodData\": [{\n"
            + " 		\"id\": 3874,\n"
            + " 		\"period_start\": \"01.01.2015\",\n"
            + " 		\"period_finish\": \"31.12.2015\",\n"
            + " 		\"description\": \"\",\n"
            + " 		\"created_at\": \"2015-08-21T13:01:13.000Z\",\n"
            + " 		\"updated_at\": \"2015-12-04T17:17:06.000Z\",\n"
            + " 		\"subscriber_id\": 1111,\n"
            + " 		\"user_id\": 20,\n"
            + " 		\"address_id\": 2223,\n"
            + " 		\"changed_user_id\": null,\n"
            + " 		\"newspaper_id\": 1,\n"
            + " 		\"price_paid\": 0,\n"
            + " 		\"price\": 0\n"
            + " 	}, {\n"
            + " 		\"id\": 3875,\n"
            + " 		\"period_start\": \"01.07.2015\",\n"
            + " 		\"period_finish\": \"31.12.2015\",\n"
            + " 		\"description\": \"\",\n"
            + " 		\"created_at\": \"2015-08-21T13:05:51.000Z\",\n"
            + " 		\"updated_at\": \"2015-12-04T17:17:06.000Z\",\n"
            + " 		\"subscriber_id\": 1112,\n"
            + " 		\"user_id\": 20,\n"
            + " 		\"address_id\": 2224,\n"
            + " 		\"changed_user_id\": null,\n"
            + " 		\"newspaper_id\": 2,\n"
            + " 		\"price_paid\": 0,\n"
            + " 		\"price\": 0\n"
            + " 	}, {\n"
            + " 		\"id\": 5172,\n"
            + " 		\"period_start\": \"01.07.2015\",\n"
            + " 		\"period_finish\": \"31.12.2015\",\n"
            + " 		\"description\": \"\",\n"
            + " 		\"created_at\": \"2015-09-17T17:52:46.000Z\",\n"
            + " 		\"updated_at\": \"2015-12-04T17:17:09.000Z\",\n"
            + " 		\"subscriber_id\": 1113,\n"
            + " 		\"user_id\": 20,\n"
            + " 		\"address_id\": 2225,\n"
            + " 		\"changed_user_id\": null,\n"
            + " 		\"newspaper_id\": 3,\n"
            + " 		\"price_paid\": 0,\n"
            + " 		\"price\": 0\n"
            + " 	}]\n"
            + " }";

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args) {

        String str = null;
        String ddd = null;
        String ddd1 = null;

        JsonParser parser = new JsonParser();
        JsonObject mainObject = parser.parse(json).getAsJsonObject();

        JsonArray JsubscriptionPeriodData = mainObject.getAsJsonArray("subscriptionPeriodData");
        JsonArray JsubscriberData = mainObject.getAsJsonArray("subscriberData");

        for (JsonElement user : JsubscriptionPeriodData) {

            JsonObject userObject = user.getAsJsonObject();
            str = userObject.get("subscriber_id").toString();
            //userObject.get("name");
            for (JsonElement userData : JsubscriberData) {

                JsonObject userObject1 = userData.getAsJsonObject();

                ddd = userObject1.get("id").toString();

                ddd1 = userObject1.get("name").toString()
                        + userObject1.get("surname").toString();

                if (str.equals(ddd)) {
                    System.out.println(ddd1 + str);
                }
            }

            //+" " + ddd; //+ " " + userObject.get("name").toString();
        }
    }
...
Рейтинг: 0 / 0
15.12.2015, 10:53
    #39128187
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
Вывод такой:
Код: powershell
1.
2.
3.
4.
run:
"Гаджи""Гаджиев"1111
"Шамиль""Ибрагимов"1112
"Арсланали""Исаев"1113
...
Рейтинг: 0 / 0
15.12.2015, 11:11
    #39128214
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
Это для себя? Откуда желание избежать базы данных (благо она встроенная в ОС)?
...
Рейтинг: 0 / 0
15.12.2015, 11:16
    #39128217
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
wadman,
Вы правы я стал подумывать об этом.
Загнать нужные данные в базу SQLite и вытаскивать от туда.
...
Рейтинг: 0 / 0
15.12.2015, 11:20
    #39128218
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
Думал может обойдется простым парсингом JSON не хотел прибегать к SQLite.
...
Рейтинг: 0 / 0
15.12.2015, 11:28
    #39128228
wadman
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
АсланалиДумал может обойдется простым парсингом JSON не хотел прибегать к SQLite.
Как раз с sql обработка будет проще в большинстве случаев.
...
Рейтинг: 0 / 0
15.12.2015, 11:46
    #39128262
Асланали
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Парсинг JSON ответа
wadman,
понял вас, буду пробовать.
...
Рейтинг: 0 / 0
Форумы / Android [игнор отключен] [закрыт для гостей] / Парсинг JSON ответа / 12 сообщений из 12, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]