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

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

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


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

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

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

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

Советую сначала посмотреть на исходный код этих шедевров, особенно на SuperObject.
...
Рейтинг: 0 / 0
14.03.2019, 12:32
    #39785901
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
Смотрел я на 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
14.03.2019, 12:36
    #39785904
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с 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);

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

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

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

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

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

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

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

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

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

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

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

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

Можно попробовать стандартную... о ней многие отзываются как "сыровато". Скажите, есть где примеры посмотреть, как работать со стандартной библиотекой? (на сайте эмбаркадеро их можно сказать нет)
...
Рейтинг: 0 / 0
14.03.2019, 13:48
    #39785979
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
тут примеры по 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
14.03.2019, 13:52
    #39785985
Valery_B
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
Игорь_UUS,

1. Может быть у вас не совсем правильное понимание работы с json ? т.е. вопрос на самом деле "Как работать с json ?"
2. В принципе, первая же ссылка которая здесь указана, ведёт на самый простой пример.
3. Её аналог я когда-то тоже приводил 21725004
...
Рейтинг: 0 / 0
14.03.2019, 13:54
    #39785987
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
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
14.03.2019, 13:59
    #39785997
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
Valery_BЕё аналог я когда-то тоже приводил 21725004

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

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

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

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

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

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

С другими не сравнивал, но несколько проектов с его помощью сделал. К тому же это единственное из адекватного, что можно сейчас найти для D2007.
...
Рейтинг: 0 / 0
14.03.2019, 16:06
    #39786119
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
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
14.03.2019, 16:26
    #39786127
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
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
14.03.2019, 16:30
    #39786128
Dmitry Arefiev
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
Ну и:
* в 10.3 стандартный JSON раз в 5-6 быстрее чем 10.2
* много больше отлавливает ситуаций с некорректным синтаксисом
* генерит "правильные" исключения
и тд
...
Рейтинг: 0 / 0
14.03.2019, 16:30
    #39786129
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
Dmitry Arefiev,

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

а если я забуду добавить явноe клонировaние ?
...
Рейтинг: 0 / 0
14.03.2019, 16:33
    #39786132
Arioch
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
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
14.03.2019, 19:10
    #39786207
_Vasilisk_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
Ariochа если я забуду добавить явноe клонировaние ?Будет двойной Free
...
Рейтинг: 0 / 0
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Посоветуйте лучшую по Вашему мнению библиотеку для работы с json / 25 сообщений из 114, страница 1 из 5
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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