Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.67/3: Рейтинг темы: голосов - 3, средняя оценка - 4.67
yura91
2 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,328
1

Как сформировать JSON для данных разных категорий?

10.10.2015, 00:12. Просмотров 589. Ответов 7
Метки нет (Все метки)

У меня есть данные разных категорий: список контактов телефона, текстовые сообщения,координаты местоположения, фото(изображения) в формате Base64 и мне нужно эти данные передать на сервер по TCP и там их записать в текстовый файл предназначенный каждый для свой категории(файл контакты для котактов, файл сообщения - для сообщений и тд). Так вот я хочу составить JSON из этих данных и передать на сервер, чтобы там его разобрать по категориям. Так вот я знаю, что это можно сделать библиотекой GSON, но для это же эти данные нужно сформировать в какую - то структуру(класс, контейнер и тп) и потом эту структуру перевести в JSON. Так вот в какую структуру лучше упаковать этот набор данных и как образовать из них JSON??

Добавлено через 2 часа 18 минут
а разбить эти данные на несколько JSONов и отправить на сервер несколько JSONов и там соответсвенно их принять можно так??
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
10.10.2015, 00:12
Ответы с готовыми решениями:

как из данных репитера сформировать JSON?
ПРивет всем! Подскажите пожалуйста, как из данных репитера сформировать строку JSON?

Скрытие кнопок для разных категорий пользователей
Помогите еще раз. :cry: Суть такая. --После ввода логина и пароля, пользователю должна...

Как правильно сформировать массив в json для php?
если есть массив- первичных параметров, то тут проблем у меня не возникло: $data="YVN";...

Разные пункты меню для разных категорий пользователей
Joomla 2.5.20 Необходимо, чтобы для авторизированных и не для авторизированных показывались...

QTreeView и отображение одних и тех же элементов для разных категорий
Есть QTreeView, есть своя моделька, есть задание добавить в неё агрегирующую категорию. По типу >...

7
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
10.10.2015, 07:53 2
по последней строке.
так можно, но так не делают: 1) время больше, за счет расходов на подключение и получение ответа для каждого, 2) есть вариант потерять часть данных, при том, что другая будет получена и обработана нормально.

по основному вопросу.
нужен некий класс (который все называют модель), который будет содержать в себе все, что подготовлено к передаче. создаем обьект этого класса, грузим в него все данные для передачи, потом gson именно этот обьект.
0
yura91
2 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,328
10.10.2015, 12:46  [ТС] 3
А если этот класс будет содержать в виде полей массивы и другие контейнеры, собственные классы то как эти поля будут представлены в JSONе после преобразования все нормально дойдет на сервер без потерь??
И второе можно ли по TCP отправлять данные порциями: Скажем создал на клиенте сокет, установил соединение с сервером, передал одну порцию данных, закрыл сокет, потом снова открыл соединение передал следующую порцию и так пока не передашь все данные можно так?? Или скажем можно создать многопоточный клиент который каждым своим потоком будет устанавливать соединение с сервером(создавать с ним свой сокет для передачи) и передавать данные или же все же оптимальнее сформировать и отправить один JSON(просто поля данных класса тоже будут разные структуры,контейнеры)??
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
10.10.2015, 17:06 4
оптимальнее сформировать один json на все обращение и обработать его в транзакции на сервере.
в сложных структурах главное чтобы все подчиненные структуры сводились к примитивным типам. дерево, например, оно не завернет, особенно если в него запихать какойнить типа обьект-сподобьектами-споддеревьями.
не ну Вы попробуйте. там вроде быстро становиться понятно. если сервер тоже Вы делаете - поймайте на стороне сервера, и гляньте, что он там шлет - будет понятнее.
ну короче там gson красиво все делает и правильно. будет структура в структуре.

по поводу сложной логики с сокетами. можно и так наколдовать. вопросов сразу несколько:
1) как будут обработаны несколько клиентов? ну типа я держу сокет, и он тоже хочет передать данные. как?
2) при разбивке данных, как будет обеспечиваться сборка и кто отвечает за достоверность?
3) есть уверенность, что на роутах будет открыт тот порт, который будет вызывать клиент?
0
yura91
2 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,328
10.10.2015, 18:19  [ТС] 5
Ну не знаю можно же без сложных контейнеров. Ну допустим я создаю класс: элементы данных(поля) которого первое - массив контактов телефона содержит список людей которые у юзера в контактах, 2 поле - массив номера телефонов контактов, 3 поле - массив сообщения которые у юзера в сообщениях 4 поле массив изображений в байтовом формате вот и этот класс я хочу превратить в JSON смогу ли я это сделать и как??На счет порта да там будет один и тот же порт и на сервере и на клиенте
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
10.10.2015, 20:19 6
решение с json будет на порядок проще, чем решение с передачей в сокет.

про класс. я не знаю, что у Вас за данные. попробую по тому, что Вы написали.
1) отдельный класс содержит поля: юзер и телефон(-ы).
2) создаете класс, в котором: массив обьектов класса 1, и массив сообщений со ссылками на 1 (в смысле там будет просто id).
и вот этот обьект класса 2 отдаете gson. он все это запакует в большую строку, и передаст всей пачкой на сервер.

а картинки я бы отправил отдельным потоком. вот их можно запихивать каждую по-отдельности. хотя это тоже зависит.
0
yura91
2 / 26 / 2
Регистрация: 23.10.2013
Сообщений: 2,328
12.10.2015, 21:07  [ТС] 7
и массив сообщений со ссылками на 1
что должно хранится в этом массиве, какое id?
0
bastrakov
91 / 91 / 14
Регистрация: 10.10.2015
Сообщений: 307
Записей в блоге: 1
13.10.2015, 06:48 8
эм... вернемся к 1)
>1) отдельный класс содержит поля: юзер и телефон(-ы).
+id, который и будет указан в сообщении. поэтому это должен быть не просто массив сообщений, а тоже структура: сообщение, (наверно id сообщения) и id пользователя.
0
13.10.2015, 06:48
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.10.2015, 06:48

Как на главную вывести только анонсы избранных материалов из разных категорий?
Мой сайт состоит из нескольких категорий и подкатегорий. На главную вывожу материалы из некоторых...

Скорость записи и чтения данных с разных источников - из реестра и Json
Всем привет. Возникла необходимость где то хранить данные приложения. Было выбрано два варианта: ...

Подскажите как сформировать вывод из бд в json?
Перелопатил множество подобных тем здесь)) по итогу сформировал нужный файл хоть и чую можно было...


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

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

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