|
|
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
Всем привет, помогите найти решение проблемы. Есть самописный json-сериализатор для Delphi XE7 - класс, поддерживающий сериализацию простых свойств, динамических массивов и объектов - потомков этого же класса. Не может сериализовать записи, динамические массивы, содержащие записи и записи, содержащие динамические массивы. Для неизвестных типов (те же запсиси, например) вызывает специальный виртуальный метод, который может быть переопределен в унаследованных классах - в этот метод передаются имя поля, информация о типе и значение (TValue). Планируется использовать этот сериализатор в большом проекте, где он будет выполнять одну из важных, но второстепенных ролей, но я настаиваю на том, что область, не затрагиваемая им, слишком велика, и простым переопределением в унаследованном классе того виртуального метода здесь не обойдешься - рискуем при большом количестве записей и массивов запутаться, кто занимается чьей сериализацией и прийти все к тем же большим функциям, содержащим ручное перечисление и сохранение параметров. Дописать сериализатор нет возможности, времени на это никто не даст. В общем, варианты такие: 1. Пользоваться этим сериализатором: половину работы с простыми типами он сделает автоматически, а остальную половину (сохранение всех возможных record'ов) можно сделать вручную в переопределенном виртуальном методе. 2. Отказаться от своего сериализатора как от неполноценного: основная сложность и есть в сохранении составных типов, а простые типы можно сохранить и вручную (быстрее будет). Вместо этого использовать метод "serialize", переопределяемый от класса к классу, с ручным сохранением всех необходимых данных. 3. Воспользоваться готовой библиотекой для сериализации. Здесь нужны советы, какой именно, чтобы она была не слишком нагруженной и не слишком долгой (сохранять и загружать данные в проекте, возможно, придется часто). В общем, надеюсь на ваши советы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 10:10 |
|
||
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
Привильней всего - №2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 11:43 |
|
||
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
rgreat , поясните, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 11:48 |
|
||
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
В чем проблема допилить сериализацию рекордов и массивов? Я сам это легко реализовал ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 11:49 |
|
||
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
amadeus, Ручная сериализация и надежней и быстрей работает. И вы не зависите от всевозможных глюков в компоненте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 11:51 |
|
||
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
А еще можно не сериализовать не нужные поля или нестандартно серилизовать нужные. Компоненту это не доступно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 11:53 |
|
||
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
Но при все этом "привильней" не значет "быстрей" или "оптимальней". Тут вам решать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 11:56 |
|
||
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
rgreat , не могу не согласиться, скорость важна, а все обходы по RTTI медленнее, чем запись напрямую. По вопросу гибкости тоже согласен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 12:10 |
|
||
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
У меня во многих проектах был сериализатор на основе интерфейса под спойлером. Всё примерно также как ты и описал. Автоматически сериализовывались все public и published свойства, остальное можно было досериализовать вручную через методы Serialize/DeSerialize Но всё должно было быть унаследовано от базовых классов. Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 12:14 |
|
||
|
Помогите советом по сериализации
|
|||
|---|---|---|---|
|
#18+
В новых версиях джавы будут отказываться от встроенного сериализатора объектов. Из-за проблем совместимости и ненадежности. Это к вопросу о том, а нужен ли он в проекте? Или подойдут обычные методы сохранения-восстановления, определяемые для каждого желаемого класса/типа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.10.2018, 14:35 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39718643&tid=2040260]: |
0ms |
get settings: |
9ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
76ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
1ms |
| others: | 240ms |
| total: | 429ms |

| 0 / 0 |
