Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.08.2014, 15:52   #1
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
Подмигивание VK API. Десериализация VK-обьектов(JSON)

Здраствуйте!
Я пытаюсь делать классы для работы с VK API и остановился на вопросе десериализации обьектов. Тоесть, получаю я ответ в формате JSON и хочу придумать механизм гибкого парсинга(а не тупо считывать каждое свойство с JSON-массива в пользовательский обьект).
Смотрел в сторону RTTI(перебирать каждое свойство), но там проблема - только published свойства(если я ошибаюсь, исправьте), что не есть очень удобно. Видел и маршалинг, но там трудно с произвольными классами...
Пришла в голову идея сделать так: создать интерфейс, который будет иметь
метод десериализации. И наверное ещё сделать базовый класс для всех ВК типов данных. От этого и буду наследовать новые классы и переопределать, где мне нужно, методы парсинга(т.е. в данном случае десериализации). Но может это не идеальный вариант...
Вот и прошу помочь идеями

Возможно немного невнятно пояснил свой ход мыслей, но я готов попробовать пояснить ещё лучше, если таковы вопросы будут.

P.S. Буду благодарен за отклик
https://vk.com/dev/datatypes
Delphi_ProGer вне форума Ответить с цитированием
Старый 14.08.2014, 17:49   #2
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

SuperObject способен даже объект Delphi сериализовать.
Код:
var
 JSON:ISuperObject;
..

JSON:=SO('JSON объект');
JSON.S['my.string'] - строка
JSON.A['arr'].S['Item1'] - элемент intem1 массива Arr
и т.д.
Документация это мощь.
Человек_Борща вне форума Ответить с цитированием
Старый 14.08.2014, 19:49   #3
Delphi_ProGer
Форумчанин
 
Регистрация: 30.10.2010
Сообщений: 524
По умолчанию

Цитата:
Сообщение от Человек_Борща Посмотреть сообщение
SuperObject способен даже объект Delphi сериализовать.
Код:
var
 JSON:ISuperObject;
..

JSON:=SO('JSON объект');
JSON.S['my.string'] - строка
JSON.A['arr'].S['Item1'] - элемент intem1 массива Arr
и т.д.
Документация это мощь.
Такое сделать можно и с помощью стандартной библиотеки начиная с Delphi XE2(или XE), только кода больше будет) Но суть та же - вручную считывать значения...
Заюзал бы RTTI, но если моментами нужно заполнить сложную структуру класса...тогда проблемы.

Вопрос остаеться открытим. Обязательно раскажу о решении, как сделаю это.
Delphi_ProGer вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
десериализация Python unbanned Python 0 05.06.2013 15:18
Десериализация .Net обьектов в Java MeTeOpA Общие вопросы по Java, Java SE, Kotlin 0 26.06.2012 14:07
Десериализация alexa2352 Microsoft Office Excel 2 22.06.2012 18:16
Десериализация Selestis Общие вопросы C/C++ 6 02.02.2011 16:02
сериализация и десериализация radiantor Работа с сетью в Delphi 7 02.08.2008 00:27