|
Десериализация из двоичных данных | ☑ | ||
---|---|---|---|---|
0
Gorr
18.07.19
✎
11:13
|
Уважаемые Коллеги, добрый день!
Нужно выполнить сериализацию / десериализацию объекта через двоичные данные. С сериализацией проблем не возникает. А вот с десерализацией: Сериализация: ЗаписьFI = Новый ЗаписьFastInfoset; ЗаписьFI.УстановитьДвоичныеДанные(); ЗаписьFI.ЗаписатьОбъявлениеXML(); СериализаторXDTO.ЗаписатьXML(ЗаписьFI,СериализуемыйОбъект,НазначениеТипаXML.Явное); ДД = ЗаписьFI.Закрыть(); Десериализация ЧтениеFI = Новый ЧтениеFastInfoset; ЧтениеFI.УстановитьДвоичныеДанные(ДД); Вот тут ошибка: СериализаторXDTO.ПрочитатьXML(ЧтениеFI, Тип("Соответствие")); Ошибка преобразования данных XDTO: НачалоСвойства: {http://v8.1c.ru/8.1/data/core}Map Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/core}Map по причине: Ошибка преобразования данных XDTO: НачалоСвойства: pair Форма: Элемент Тип: {http://v8.1c.ru/8.1/data/core}KeyAndValue по причине: Ошибка преобразования данных XDTO: Чтение объекта типа: {http://v8.1c.ru/8.1/data/core}KeyAndValue Проверка свойства 'Key': форма: Элемент имя: {http://v8.1c.ru/8.1/data/core}Key тип: {http://www.w3.org/2001/XMLSchema}anyType по причине: Тип свойства неопределен Квалифицированное имя типа: 'xs:decimal' по причине: Ошибка отображения пространства имен Отсутствует отображение для префикса: 'xs' |
|||
1
olegves
18.07.19
✎
11:17
|
(0) ДД надо сначала в Base64 и далее зиповать. Никакой сериализации там не надоть
|
|||
2
vde69
18.07.19
✎
11:20
|
Base64 - надо
зиповать - не надо |
|||
3
olegves
18.07.19
✎
11:22
|
(2) если предполагается передача через тырнет, то надо
|
|||
4
vde69
18.07.19
✎
11:23
|
(3) зачем зиповать кусок когда зипуется весь пакет в целом?
|
|||
5
Gorr
18.07.19
✎
11:24
|
ДД нет. его надо получить из сериализуемого значения.
Если предлагается сначала сериализация в строку (через XML например), а затем Base64Значение, то для этого FastInfoset и был придуман (за один шаг). |
|||
6
Gorr
18.07.19
✎
11:25
|
как я уже показал, сериализация в дд через FastInfoset проблем не вызывает.
Вопрос как потом сериализовать обратно из дд... |
|||
7
olegves
18.07.19
✎
11:27
|
(5) FastInfoset в версионировании БСП используется - посмотри там
|
|||
8
Gorr
18.07.19
✎
11:30
|
Насколько я понял он там только для конверсии объектов в дд используется для подсчета контрольной суммы, чтобы понять есть ли различия между разными версиями. Кстати, идею преобразования объектов в дд как раз из БСП и взял. Вопрос в обратном преобразовании.
|
|||
9
vde69
18.07.19
✎
11:30
|
скопируй строку ДД в файл и посмотри, что именно там
|
|||
10
Gorr
18.07.19
✎
13:05
|
Стандартные объекты сериализуются/десериализуются. К сожалению десириализация Соответствия вызывает ошибку. Видимо не все что может быть сериализовано с помощью FastInfoset может быть восстановленно обратно. Вопрос решил через ЗначениеВФайл/ЗначениеИзФайла. Как всегда в 1С через одно место...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |