powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
25 сообщений из 114, страница 1 из 5
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785780
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день.

Очень, очень буду признателен за советы
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785807
Фотография X-Cite
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Стандартная не подходит?
http://docwiki.embarcadero.com/RADStudio/Rio/en/JSON
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785813
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
самая быстрая - mORMot

самая удобная на чтение - SuperObject, она также и XML читает
для создания JSON там некоторые неочевидные грабли есть, к которым надо привыкнуть.
Плюс, как всегда у Анри, крайне лаконичная документация


самая совместимая - если не ошибаюсь lkJSON работает даже с Delphi 5 (1999 года)

есть ещё штуки типа JSON Data Objects

Я обычно SuperObject пользуюсь, но дело привычки

Стандартной я бы не стал пользоваться, её до сих пор доделывают.
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785875
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
X-CiteСтандартная не подходит?
http://docwiki.embarcadero.com/RADStudio/Rio/en/JSON
+1
Ariochсамая удобная на чтение - SuperObject, она также и XML читает

Советую сначала посмотреть на исходный код этих шедевров, особенно на SuperObject.
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785901
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Смотрел я на SO и даже правил.

Зато сколько разнообразных косяков было в dbExpress JSON когда он появился.... даже про TXMLDocument столько обалдевших вопросов не было

И даже без учёты выловленных и не выловленных косяков....

Rio - после многолетнего улучшения правок исправленийLJSONObject := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(GJSONString), 0) as TJSONObject;


SuperObjectiJSON := SO(GJSONString);


Rio LJSONObject:= TJSONObject.Create;
LJSONObject.AddPair(TJSONPair.Create(TJSONString.Create('Hello'),
TJSONString.Create('World')));
.....
LJSONObject.Destroy;


SuperObjectiJSON := SO;
iJSON.S['Hello'] := 'World';


Я искренне восхищаюсь мазохистами, но понять их не могу.

P.S. кстати, что будет если взять целую ветку (объект) из середины одного JSON-документа и перенести в другой документ ?

Примерно что-то такое:

LJSONObject1 := TJSONObject.ParseJSONValue('c:\file1.json');
LJSONObject2 := TJSONObject.ParseJSONValue('c:\file2.json');

LJSONValue := LJSONObject['city[1].street[''Ленина''].house[20]'];
LJSONObject2.AddPair('city[8].street[''Победы''].house[5]', LJSONValue);


Они разберутся на тему совместного владения этой подветкой, память не потечёт, двойного удаления не будет?
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785904
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Или ещё лучше, примерно что-то такое:

LJSONObject1 := TJSONObject.ParseJSONValue('c:\file1.json');
LJSONObject2 := TJSONObject.ParseJSONValue('c:\file2.json');

LJSONValue := LJSONObject['city[1].street[''Ленина''].house[20]'];
LJSONObject2.AddPair('city[8].street[''Победы''].house[5]', LJSONValue);

LJSONObject2.SaveFile;
LJSONObject2.Destroy;
LJSONObject1.Destroy;

Memo1.Linex.Add('Владелец квартиры ' + LJSONValue.GetString<string>('appartment[13].owner'));
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785911
kealon(Ruslan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

смотря для чего. парсинг, создание, сериализация\десериализация?

та что в поставке это пипец, другое слово подобрать сложно
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785930
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
kealon(Ruslan)Игорь_UUS,

смотря для чего. парсинг, создание, сериализация\десериализация?

та что в поставке это пипец, другое слово подобрать сложно

Библиотека нужна для Создания и Чтения.
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785931
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь_UUS,

библиотека нужна для 10.2
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785957
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kealon(Ruslan)та что в поставке это пипец, другое слово подобрать сложно
И чем именно она пипец ? Можно что-нибудь конкретное ?

Она во многом повторяет NewtonSoft для VisualStudio(Или Newtonsoft во многом повторяет RadStudio)

Игорь_UUSИгорь_UUS,
библиотека нужна для 10.2
Так чем тебе стандартная не подходит ?
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785970
Игорь_UUS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Valery_Bkealon(Ruslan)та что в поставке это пипец, другое слово подобрать сложно
И чем именно она пипец ? Можно что-нибудь конкретное ?

Она во многом повторяет NewtonSoft для VisualStudio(Или Newtonsoft во многом повторяет RadStudio)

Игорь_UUSИгорь_UUS,
библиотека нужна для 10.2
Так чем тебе стандартная не подходит ?

Можно попробовать стандартную... о ней многие отзываются как "сыровато". Скажите, есть где примеры посмотреть, как работать со стандартной библиотекой? (на сайте эмбаркадеро их можно сказать нет)
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785979
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
тут примеры по SO (да, у Анри всегда документация сверx-краткая), а также в папках demo & tests
https://github.com/hgourvest/superobject

по mORMot'у надо их документацию скачать, она у них весьма наворотистая.
Навскидку можно глянуть
http://blog.synopse.info/post/2013/12/10/JSON-record-serialization
http://blog.synopse.info/post/2011/02/23/Fast-JSON-(un)serialization

http://blog.synopse.info/post/2015/02/16/Benchmarking-JsonDataObjects-JSON-parser

И вообще http://blog.synopse.info/tag/JSON
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785985
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Игорь_UUS,

1. Может быть у вас не совсем правильное понимание работы с json ? т.е. вопрос на самом деле "Как работать с json ?"
2. В принципе, первая же ссылка которая здесь указана, ведёт на самый простой пример.
3. Её аналог я когда-то тоже приводил 21725004
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785987
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
http://blog.synopse.info/post/2015/02/16/Benchmarking-JsonDataObjects-JSON-parser
Since JsonDataObjects has been written by Andreas Hausladen, the maintainer of the great Delphi IDE fix packs, this new JSON library is very promising.

...

Source code of the test is available in our source code repository.
https://github.com/synopse/mORMot/blob/master/SQLite3/Samples/25 - JSON performance/JSONPerfTestCases.pas


вот можешь посмотреть, как одни и те же задачи делаются в разных библиотеках.

Только учти, что mORMot делается для высоконагруженных серверов и там скорость выжимают любой ценой.
Вероятно, что и в демке там код окажется не наиболее простой и ясный, а наиболее быстрый.
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39785997
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Valery_BЕё аналог я когда-то тоже приводил 21725004

мрачная картинка.

похоже, решили продублировать Microsoft XmlLite для JSON

интересно, что будет, если я ошибусь и сломаю баланс вызовов StartXXX и EndYYY
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786007
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochмрачная картинка.

Это из видео с официального канала Ембрякоделлы с Ютуба.
Видео, по моему шло там более 1.5 часа - а это суть, что бы не смотреть все полтора часа.

На мой взгляд, объяснить, как работать с Json в Delphi можно максимум минуты за 2-3.
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786042
rgreat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне больше XSuperObject нравится.
https://github.com/onryldz/x-superobject
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786048
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А мне нет. Смотрел я на XSO, и мне кажется, это хуже исходной SO

Кстати, в бенчах скорости SO самая медленная вроде бы, ПОСЛЕ XSO которая дескать вообще за гранью
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786074
DmSer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне понравился модуль cJSON.pas у Батлера:
https://github.com/fundamentalslib

С другими не сравнивал, но несколько проектов с его помощью сделал. К тому же это единственное из адекватного, что можно сейчас найти для D2007.
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786119
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DmSerэто единственное из адекватного, что можно сейчас найти для D2007

а lkJSON неадекватна ?

Вроде не хуже, чем "стандартный" dbx JSON по интерфейсу.

https://stackoverflow.com/questions/43882426/generate-json-array-with-lkjson-in-delphi-7
http://qaru.site/questions/7210884/parse-json-using-lkjson
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786127
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch
Код: pascal
1.
LJSONObject := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(GJSONString), 0) as TJSONObject;



Код: pascal
1.
LJSONObject := TJSONObject.ParseJSONValue(GJSONString) as TJSONObject;



Arioch
Код: pascal
1.
2.
3.
4.
5.
LJSONObject:= TJSONObject.Create;
LJSONObject.AddPair(TJSONPair.Create(TJSONString.Create('Hello'),
                                     TJSONString.Create('World')));
.....
LJSONObject.Destroy;



Код: pascal
1.
2.
3.
4.
LJSONObject:= TJSONObject.Create;
LJSONObject.AddPair('Hello', 'World');
.....
LJSONObject.Destroy;



Arioch
Код: pascal
1.
2.
3.
4.
5.
LJSONObject1 := TJSONObject.ParseJSONValue('c:\file1.json');
LJSONObject2 := TJSONObject.ParseJSONValue('c:\file2.json');

LJSONValue := LJSONObject['city[1].street[''Ленина''].house[20]'];
LJSONObject2.AddPair('city[8].street[''Победы''].house[5]', LJSONValue);



Код: pascal
1.
2.
3.
4.
5.
LJSONObject1 := TJSONObject.ParseJSONValue('c:\file1.json');
LJSONObject2 := TJSONObject.ParseJSONValue('c:\file2.json');

LJSONValue := LJSONObject['city[1].street[''Ленина''].house[20]'];
LJSONObject2.AddPair('city[8].street[''Победы''].house[5]', LJSONValue.Clone);



Ну и тд.
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786128
Фотография Dmitry Arefiev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и:
* в 10.3 стандартный JSON раз в 5-6 быстрее чем 10.2
* много больше отлавливает ситуаций с некорректным синтаксисом
* генерит "правильные" исключения
и тд
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786129
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry Arefiev,

немножко лучше

а если я забуду добавить явноe клонировaние ?
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786132
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dmitry ArefievArioch
Код: pascal
1.
2.
3.
4.
5.
LJSONObject:= TJSONObject.Create;
LJSONObject.AddPair(TJSONPair.Create(TJSONString.Create('Hello'),
                                     TJSONString.Create('World')));
.....
LJSONObject.Destroy;




Код: pascal
1.
2.
3.
4.
LJSONObject:= TJSONObject.Create;
LJSONObject.AddPair('Hello', 'World');
.....
LJSONObject.Destroy;



но в офиц-доке так писать не хотят....
http://docwiki.embarcadero.com/RADStudio/Rio/en/JSON_Objects_Framework


Dmitry ArefievArioch
Код: pascal
1.
LJSONObject := TJSONObject.ParseJSONValue(TEncoding.UTF8.GetBytes(GJSONString), 0) as TJSONObject;


Код: pascal
1.
LJSONObject := TJSONObject.ParseJSONValue(GJSONString) as TJSONObject;



И это тоеж я не придумывал, а всё по той же ссылке взял
...
Рейтинг: 0 / 0
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
    #39786207
Фотография _Vasilisk_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ariochа если я забуду добавить явноe клонировaние ?Будет двойной Free
...
Рейтинг: 0 / 0
25 сообщений из 114, страница 1 из 5
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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