|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
Добрый день, подскажите пожалуйста, можно ли возвращать объект сериализованный вручную ? Например, есть объект TPerson у которого есть свой метод ToJsonString; Я хочу, что метод сервиса возвращал Json именно из этого метода. т.к. объект сам лучше знает, как себя сериализовывать. Небольшой пример: Код: c# 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 12:36 |
|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
Наверное, можно сделать так, что бы метод возвращал string или JObject Но думаю, что это не правильный путь. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 12:39 |
|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
В текущем варианте что не работает то? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 13:07 |
|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
vb_sub, Тип не тот. Сервис должен вернуть TPerson. А метод ToJsonString возвращает string ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 13:53 |
|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
Ну дак возвращай не TPerson, а Stream или String. Но по факту, это нарушение 1 принципа SOLID, у вас класс, который отвечает за хранение данных, отвечает и за их загрузку\сохранение, что уже вызывает массу вопросов. По сути это DTO тип и ничего кроме как полей и свойств этому типу лучше не иметь. процессом социализации можно управлять, для этого достаточно погуглить 5 минут, чтоб разобраться ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 14:13 |
|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
Roman Mejtes это нарушение 1 принципа SOLID Хорошо. Я создам отдельный класс сериализатор, который на вход получит TPerson, а на выходе тот Json, который мне нужен. Что это изменит ? Как заставить метод использовать этот сериализатор ? ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 14:35 |
|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
Newtonsoft.Json ? Код: c# 1. 2.
... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 14:44 |
|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
Konst_One Newtonsoft.Json ? Да. Newtonsoft.Json в целом работает правильно. И кстати, в по умолчанию используется не он. Но для одного метода сервиса мне нужен именно мой собственный сериализатор. В данном случае, я встроил его сразу в TPerson, и не знаю, как включить. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 14:55 |
|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
посмотрите на такой вариант: https://stackoverflow.com/a/11953734 ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 15:05 |
|
Как сериализовать объект вручную ?
|
|||
---|---|---|---|
#18+
Konst_One, Да, получилось. Надо создать класс сериализатор и класс сериализатора прописать атрибутом к TPerson. Код: c# 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.
Но теперь не понимаю, почему метод сервиса работает через Newtonsoft.Json. Я его поставил как пакет нугет. ... |
|||
:
Нравится:
Не нравится:
|
|||
11.05.2021, 15:36 |
|
|
start [/forum/topic.php?fid=18&msg=40069343&tid=1354536]: |
0ms |
get settings: |
11ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
44ms |
get tp. blocked users: |
1ms |
others: | 261ms |
total: | 385ms |
0 / 0 |