|
|
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Ariochно в офиц-доке так писать не хотят.... http://docwiki.embarcadero.com/RADStudio/Rio/en/JSON_Objects_Framework Наверняка дока не менялась с момента появления ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2019, 19:11 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Ariochа если я забуду добавить явноe клонировaние ?Будет двойной Free Прэлэмтно! Прэлэстно! В общем, я для себе давно вывел правило. Если какая-то проблема решается в Delphi библиотекой "из коробки" и сторонней библиотекой - надёжнее использовать стороннюю. Особенно если она бесплатная и с исходниками Конечно, оно не абсолютное, но для первого приближения, пока не доказано обратное, она верна ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2019, 19:51 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2019, 19:52 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Ariochа если вот так - 21832378 ?Аналогично. Если один JSON объект передать во внутрь второго, то второй становится владельцем первого и сам его уничтожает. И да, в TJSONValue нет default свойства. Так, что вместоArioch Код: pascal 1. нужно писать Код: pascal 1. Это для Rio ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2019, 20:18 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, там не на это упор там суть в том, что оба JSON Document я уже отдестроил, а вот после этого начинаю читать Value поддерева документа (которая была сохранена в отдельную переменную TObject) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2019, 20:28 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Ariochтам суть в том, что оба JSON Document я уже отдестроил, а вот после этого начинаю читать Value поддерева документа (которая была сохранена в отдельную переменную TObject)Аналогично. Родитель уничтожает за собой всех детей. Должно быть Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. try - finally добавить по вкусу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 00:55 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Ещё вопрос... Если использовать стандартную библиотеку, там предусмотрена передачи бинарных данных ("файла" например) в тот же "Writer"? И можно ли читать бинарные данные из json? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 07:30 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Игорь_UUSЕщё вопрос... Если использовать стандартную библиотеку, там предусмотрена передачи бинарных данных ("файла" например) в тот же "Writer"? И можно ли читать бинарные данные из json? Думаю можно через BinToHex и HexToBin преобразовать из бинарного в шеснадцатиричную строку и наоборот ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 09:12 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Игорь_UUSИ можно ли читать бинарные данные из json? json - это UTF-8 текст, представь бинарные данные в виде текста и будет счастье X-CiteДумаю можно через BinToHex и HexToBin преобразовать из бинарного в шеснадцатиричную строку и наоборот base64 выгоднее ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 09:24 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Дегтярев ЕвгенийИгорь_UUSИ можно ли читать бинарные данные из json? json - это UTF-8 текст, представь бинарные данные в виде текста и будет счастье X-CiteДумаю можно через BinToHex и HexToBin преобразовать из бинарного в шеснадцатиричную строку и наоборот base64 выгоднее Точно.. что-то не подумал... http://docwiki.embarcadero.com/Libraries/Rio/en/System.NetEncoding.TNetEncoding TNetEncoding.Base64.Encode() TNetEncoding.Base64.Decode() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 09:46 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
X-CiteДегтярев Евгенийпропущено... json - это UTF-8 текст, представь бинарные данные в виде текста и будет счастье пропущено... base64 выгоднее Точно.. что-то не подумал... http://docwiki.embarcadero.com/Libraries/Rio/en/System.NetEncoding.TNetEncoding TNetEncoding.Base64.Encode() TNetEncoding.Base64.Decode() Получается: EncodeBytesToString.EncodeBytesToString() EncodeBytesToString.DecodeStringToBytes() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 11:29 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Ariochтам суть в том, что оба JSON Document я уже отдестроил, а вот после этого начинаю читать Value поддерева документа (которая была сохранена в отдельную переменную TObject)Аналогично. Родитель уничтожает за собой всех детей. Т.е. на пустом месте получаем use-after-free! Отличная библиотека. Напоминая, что в этом крайне коротком и простейшем из возможных коде - ты ошибки не видел пока я пальцем не ткнул. В реальном сложном коде - и не увидишь. _Vasilisk_Должно быть Код: pascal 1. 2. Должно быть, чтобы все программы сразу писались без ошибок. Но так редко бывает. Если библиотеке нужно что-то клонировтаь, чтобы работать без ошибок - то лучше пусть клонирует сама, не надеясь на программиста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 12:54 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Ariochпусть клонирует сама, не надеясь на программиста. и убьет производительность ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 13:00 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Игорь_UUSЕщё вопрос... Если использовать стандартную библиотеку, там предусмотрена передачи бинарных данных ("файла" например) в тот же "Writer"? И можно ли читать бинарные данные из json? В модуле SOAP.EncdDecd - который был ещё когда System.NetEncoding не было - есть два класса TStream, которые encode и decode base64 Соответсвенно скармливаешь им TFileStream и TStringStream (через TStream.CopyFrom) Можно и TNetEncoding.DecodeStringToBytes подвязать в IOUtils.TFile.WriteAllBytes Но 1) "Input Strings for Decode and DecodeStringToBytes should be UTF8 encoded." - такие вещи IMHO библиотека должна сама обеспечивать. Потому что ты рано или поздно забудешь. Не говоря про лишний мусор в коде. 2) TBytes нормально сработает с маленькими файлами, так что тебе именно в этом случае париться наверное смысла нет. Но вообще с файлами заранее неизвестного размера рекомендуется работать кусками и целиком их в память не грузить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 13:03 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Дегтярев ЕвгенийAriochпусть клонирует сама, не надеясь на программиста. и убьет производительность т.е. если я вызову клонирование оно отработает в разы быстрее, чем если то же клонирование вызовет библиотека ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 13:04 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Дегтярев ЕвгенийAriochпусть клонирует сама, не надеясь на программиста. и убьет производительность не хочет клонировать - пусть не клонирует но пусть не удаляет до того, как я закончл с ним работу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 13:04 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
AriochДегтярев Евгенийпропущено... и убьет производительность не хочет клонировать - пусть не клонирует но пусть не удаляет до того, как я закончл с ним работуесть такое свойство Код: pascal 1. ставь в false и удаляй сам тогда клонировать не нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 13:24 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
kealon(Ruslan)ставь в false и удаляй сам тогда клонировать не нужно отлично! Значит библиотека его и может ставить. мы в конце концов на ассемблере пишем, или на языке высокого уровня? вообще, если кому-то надо проценты скорости выжимать, что вы делаете на Delphi с его знаменито-плохим оптимизатором, возхможно худшим из всех компиляторов вообще ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 13:29 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
AriochНапоминая, что в этом крайне коротком и простейшем из возможных коде - ты ошибки не видел пока я пальцем не ткнул.Правильно. Потому, что передача объекта от одного родителя к другому это большая редкость. А уничтожение родителя, а потом работа с потомком это вообще за гранью добра и зла. Ты же не пытаешься обращаться к комбобоксу после уничтожения формы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 14:34 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Игорь_UUSИ можно ли читать бинарные данные из json?Есть System.JSONB. Сам не использовал, но по идее, это то, что вам нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 14:35 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Ariochотлично! Значит библиотека его и может ставить. Не может, если задуматься :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 14:40 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Поигрался с json в поставке 10.2 конечно своеобразный подход)) по началу даже немного непонятный)) Скажите TJSONObject.ParseJSONValue - это единственная возможность начать чтение json? например Код: pascal 1. 2. 3. 4. 5. к чему спрашиваю... получается у остальных классах (например TJSONArray) возможности прочитать json нет на подобии как TJSONObject.ParseJSONValue ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 14:42 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev, может, просто должна быть написана соответствующим образом, начиная с типов. если в ассемблере нет контроля типов данных - это не значит, что его вообще ни в одном языке не может быть. В C не было, а в C++ появился. Писать на ассемблере иногда забавно. Иногда (теперь уже редко) - полезно. Вот эта библиотека - ассемблер. В ней разложили граблей на всех поворотах "ради скорости". _Vasilisk_Есть System.JSONB. Сам не использовал, но по идее, это то, что вам нужно Вряд ли. Это просто другой формат того-же JSON. https://toster.ru/q/315910 Аналогично EBML, BinaryXML, MessagePack и т.д. А у него задача внутри JSON передать неформатированный бинарник ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 15:00 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
Игорь_UUS, возьми стандарт JSON или хотя бы просто историю откуда он взялся JSON - это объект на языке JavaScript (изначально, сейчас чем-то уже отличается). В терминах Delphi - record. Может ли record быть array? нет, это разные типы. Поэтому у array нет функции грузить себя (ParseXXXX) из record - такого просто не может быть в JSON ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 15:02 |
|
||
|
Посоветуйте лучшую по Вашему мнению библиотеку для работы с json
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_Потому, что передача объекта от одного родителя к другому это большая редкость. 1) я ничего никуда не передавал, я просто вызвал функцию библиотеки "добавить новое значение", что она там внутри делает - это "детали реализации" прикладному программисту не нужные. Она просто должна в другом документе сделать те же дланные, и всё. 2) но это вообще не важно. Из последнего примера вообще убери второй документ - ничего не изменится. Суть проблемы в другом, что когда я читаю данные из JsonValue (в Memo - но это частности, могу бы и в БД и куда угодно) - это JsonValue оказывается кем-то со стороны уже разрушено. Проблема именно в этом, use after free, при том что именно я никакого free для jsonValue не делал вообще. На каждом повороте - лежат грабли. Зато якобы, если ты прошёл все квесты и на бегу успел увидеть и перепрыгнут ьВСЕ грабли, то у тебя будет быстрый код. Dmitry Arefievв 10.3 стандартный JSON раз в 5-6 быстрее чем 10.2 Если добежишь. Если тебе вообще был нужен тут самый-быстрый-в-мире-код в этом месте (в самом деле нужно каждую секунду новый мегабайт JSONа парсить?). И даже при этом mORMot и JSO будут скорее всего быстрее. И тот же mORMot как заявлено работает с SON бесконечного размера. Т.е. "стандартный" - всё равно это "грабли минус скорость". По удобству и безопасности - ассемблер, по скорости кода - бейсик (но хороший, быстрый бейсик). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2019, 15:10 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39786786&tid=2039666]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
429ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
89ms |
get tp. blocked users: |
2ms |
| others: | 243ms |
| total: | 812ms |

| 0 / 0 |
