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

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

Войти
Регистрация
Восстановить пароль
 
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
#1

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

10.10.2015, 00:12. Просмотров 505. Ответов 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 для данных разных категорий? (Программирование Android):

JSOUP POST. В ответ вместо JSon приходит разметка страницы с полями для ввода данных - Программирование Android
Делаю пост запрос к апи сайта. Назад должен получить json, однако получаю разметку страницы с полями для ввода данных. Т.е. как будто...

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

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

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

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

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

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

по основному вопросу.
нужен некий класс (который все называют модель), который будет содержать в себе все, что подготовлено к передаче. создаем обьект этого класса, грузим в него все данные для передачи, потом gson именно этот обьект.
0
yura91
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
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
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
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
1 / 25 / 2
Регистрация: 23.10.2013
Сообщений: 2,310
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 - C#
Всем привет. Возникла необходимость где то хранить данные приложения. Было выбрано два варианта: Реестр JSON Из какого...

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

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

Как создать общий список с разных типов данных для 2 потомков? - C#
Есть базовый абстрактный класс и 2 потомка. Как создать общий список с разных типов данных для 2 потомков?


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

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

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