powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / JSON Serializer/Deserializer
36 сообщений из 36, показаны все 2 страниц
JSON Serializer/Deserializer
    #39645754
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посоветуйте библиотеку для JSON сериализации/десериализации.

Требование:
1. Умение работать с RTTI, чтобы можно было сериализовать/десериализовать готовые объекты
2. Правильно работать со строками (выгрузка в UTF-8 с экранированием служебных символов, загрузка с пониманием экранированных символов)
3. Умение работать с List<>
4. Умение работать с перечислимыми типами
5. Возможность добавления своих сериализаторов/десериализаторов для каких-то типов.

Сейчас взял JSON object serializer for Delphi от Clever Components.

У него подержка только первого пункта. 4 и 5 я добавил вручную. Из 5, следует работа с 3. 2 сейчас буду пилить.

Но, может есть, что более адекватное?

Наверное, даже устроит отсутствие поддержки RTTI при условии, адекватной работы остальных пунктов

С уважением, Vasilisk
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #39645759
stanilar
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В качестве предложения:

Может глянуть mormot? Он умеет как-то работать с json. Даже в виде запросов к БД. В запросах мне правда не удалось разобраться.
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #39645760
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #39645791
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rgreatРодное чем не устраивает?Не видел.

Завтра еще почитаю. А пока прикрутил к стандартному DBXJSON поддержку RTTI. Вроде, получается менее громоздко, чем использование DBXJSONReflect
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #39645841
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я всегда пользуюсь XSuperObject.
По сравнению с родным все сильно лучше.
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #39645842
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
забыл сказать, родной JSON от XSO содержит \u
исправляю на лету этим https://bitbucket.org/vkrapotkin/unescapejson/src/master/
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #39646000
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
krapotkinя всегда пользуюсь XSuperObject.Как я понял, сериализацию для класса нужно писать вручную? С RTTI оно не работает?
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #39646105
Фотография krapotkin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
конечно работает
там же примеры на главной
https://github.com/onryldz/x-superobject
я все настройки программ всегда в JSON храню
чтение-запись одной строкой
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #39646110
энди
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
это уже не сам SO, а скорее даже надстройка на него :)
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
JSON Serializer/Deserializer
    #40021646
Фотография X11
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_, подскажи, можно ли с этой библиотекой сделать что-то типа:

Код: pascal
1.
2.
StoreComponentToJSon(Checkbox1, VarArrayOf(['checked']));
StoreComponentToJSon(Form1, VarArrayOf(['Top', 'Left', 'State']));


и, соответственно
Код: pascal
1.
2.
RestoreComponentFromJSon(Checkbox1, VarArrayOf(['checked']));
RestoreComponentFromJSon(Form1, VarArrayOf(['Top', 'Left', 'State']));



т.е. задача: сохранить и потом восстановить какие-то конкретно указанный список свойств? все не нужны
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021746
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X11
, можно ли с этой библиотекой сделать что-то типа:
Я до этой библиотеки так и не добрался. Я уже говорил, что написал свою обертку над стандартным System.Json. Теперь у меня все работает через такой класс
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
  TJsonParser = class abstract
  public
    class function ToJson(const AValue: TValue): TJSONValue; overload; static;
    class function ToJson(AObject: TObject): TJSONValue; overload; static;
    class function ToJson<T>(const AData: T): TJSONValue; overload; static;
    class function ToJson(AType: TRttiType; AInstance: Pointer): TJSONValue; overload; static;
    class function ToJsonStr<T>(const AData: T): string; static;
    class function FromJson(AJson: TJSONValue; AType: TRttiType): TValue; overload; static;
    class procedure FromJson(const AJsonBuf: TArray<Byte>; AOffset, ALen: Integer; ADst: TObject); overload; static;
    class procedure FromJson(const AJsonStr: string; ADst: TObject); overload; static;
    class procedure FromJson(AJson: TJSONValue; ADst: TObject); overload; static;
    class procedure FromJson<T: IInterface>(const AJsonStr: string; const ADst: T); overload; static;
    class procedure FromJson<T: IInterface>(AJson: TJSONValue; const ADst: T); overload; static;
    class function FromJson<T>(const AJsonBuf: TArray<Byte>; AOffset: Integer = 0;
      ALen: Integer = -1): T; overload; static;
    class function FromJson<T>(const AJsonStr: string): T; overload; static;
    class function FromJson<T>(AJson: TJSONValue): T; overload; static;
    class procedure FromJson(AJson: TJSONValue; AType: TRttiType; AInstance: Pointer); overload; static;
  end;

...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021750
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_> написал свою обертку над стандартным System.Json.
_Vasilisk_> Теперь у меня все работает через такой класс

Нигде не выкладывал?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021751
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
Нигде не выкладывал?
Нет. Влом писать документацию
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021752
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну если оно более-менее отделено (хотя бы в виде отдельного модуля)
и не ограничены всякими корпоративными запретами - вполне можно
выложить куда-нибудь (да хоть файлом сюда) даже без документации -
может кому-нибудь и пригодится.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021803
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам
может кому-нибудь и пригодится.

+1

Тоже есть желание пошшупать JSON. Правда, в Лазаре уже есть вроде как готовая обертка , но посмотреть бы пригодилось
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021829
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Давай сами напишем
Я давно хочу
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021831
Фотография defecator
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Модератор форума
SOFT FOR YOU
_Vasilisk_,

Давай сами напишем
Я давно хочу


пиши сразу самый супербыстрый во всём мире
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021837
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
defecator,

Какого черта здесь смешного?
В данном случае скорость важна, но важнее гибкость
Мне удавалось создавать очень быстрые решения сериализации/десериализации
Но самые ли они быстрые - я не знаю
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021843
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Мне удавалось создавать очень быстрые решения сериализации/десериализации

Очень быстрые не подходят. Нужены САМЫЕ быстрые решения. Нынешнее железо с Очень быстрыми не справится.
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021852
ъъъъъ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SOFT FOR YOU
Но самые ли они быстрые - я не знаю

Слабак.
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021861
white_nigger
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да хватит уже стебать!
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021923
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Очень странно выглядит, ребята.
Вы вроде как инженеры, программисты.
И пытаетесь высмеивать коллегу, который действительно достигает выдающихся результатов.
Если часть моих наработок действительно самые быстрые в мире - это прекрасно.
А если вы не согласны с тем или иным утверждением - прошу аргументировать.

По теме
Я давно веду работу относительно RTTI/маршаллинга/парсинга.
В C# меня очень привлекает концепция форматтера, когда одни и те же данные можно упаковать в разный формат. XML, JSON или что-то ещё.
Часть кода уже есть в Tiny.Library. Часть не опубликована.
Касательно XML и JSON меня смущает отсутствие компетенций. Мне нужен человек, который сможет критически подходить к тем или иным решениям, консультировать, проверять, писать автотесты.

__Vasilisk__ как раз обладает экспертностью в этих форматах.

P.S. Писать очередную библиотеку, которая выполняет те же действия - бессмысленно.
Писать самую быструю... или самую гибкую - вот достойная цель.
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40021997
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док> Тоже есть желание пошшупать JSON

Сам JSON-то несложен, там интересен код сериализации/десериализации.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022118
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По просьбам трудящихся https://github.com/anton-shchyrov/UrsJSON

Если кто сделает документацию - буду рад
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022123
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022168
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

спасибо
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022178
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

А можешь поподробнее рассказать, как с листами работаешь?
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022221
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
как с листами работаешь?
Не понял вопроса
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022250
Фотография Квейд
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у меня взлетела https://github.com/onryldz/x-superobject

+там куча плюшек
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022257
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Я могу сам закопаться в коде и все разузнать. Но это муторно, долго
Мож ты краткий курс проведёшь
Я увидел, у тебя есть определение, является ли класс TList-ом
Не очень понятно, зачем сравнивать базовый модуль. Разве все листы относятся к одному модулю?

Потом возникает вопрос. Нужно ли вызывать конструктор листа при чтении из формата

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

Если захочешь ещё что-то рассказать - рассказывай
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022304
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU,

list, если перевести на русский - это "список", а не "лист".
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022322
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
s62,

Очень ценное замечание )
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022498
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
Не очень понятно, зачем сравнивать базовый модуль.
Потому что я могу определить свой TList с произвольной функциональностью. И назвать его так же. А мне нужен конкретно System.Generics.Collections.TList<T>. Т.к. наследники конкретно этого класса сериализуются/десериализуются в JSON массивы
SOFT FOR YOU
Разве все листы относятся к одному модулю?
Я ищу родительский класс
SOFT FOR YOU
Нужно ли вызывать конструктор листа при чтении из формата
При чтении в объект никакие конструкторы не вызываются. Объект должен быть уже сконструирован внешним кодом. Заполняются только поля объекта
SOFT FOR YOU
По идее лист может быть от любого типа
Если тип элементов не соответствуют JSON типам, то поднимается исключение. Или нужно писать кастомный десериализатор значений. Примеры десериализаторов в модуле UrsJSONCommonSerializers
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022519
SOFT FOR YOU
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Vasilisk_,

Правильно ли я понимаю
По имени класса ты определяешь тип элемента листа
И в зависимости от этого вручную вызываешь метод того или иного известного листа
Иначе говоря TList<Double> ты сможешь сериализовать, а TList<TMyRec> нет. Так?

Ещё вопрос
С чем связано использование листов?
Почему не TArray<>?
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022533
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SOFT FOR YOU
По имени класса ты определяешь тип элемента листа
Нет. Тип 'лементов листа определяется через Rtti. Работа с именем класса единственный способ реализовать проверку
Код: pascal
1.
if MyVar is TList<T> then


SOFT FOR YOU
Иначе говоря TList<Double> ты сможешь сериализовать, а TList<TMyRec> нет.
TList<TMyRec> сериализуется в массив объектов
SOFT FOR YOU
С чем связано использование листов?
Почему не TArray<>?
Для сериализации и десериализации эти два типа идентичны. Оба они, а также TStrings разворачиваются в JSON массивы. Что конкретно использовать определяется не json'ом, а приложением
...
Рейтинг: 0 / 0
JSON Serializer/Deserializer
    #40022535
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подробнее об извращении со строками здесь
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / JSON Serializer/Deserializer
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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