Имя: Пароль:
1C
 
СериализаторXDTO: как добавить свой элемент?
0 evorle145
 
13.02.24
16:36
Подскажите, как добавить в ответ, например, количество элементов массива МассивJSON?

МассивJSON = Новый Массив;

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
    МассивJSON.Добавить(ВыборкаДетальныеЗаписи.ССылка.ПолучитьОбъект());
КонецЦикла;

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, МассивJSON);

Результат = ЗаписьJSON.Закрыть();
Ответ.УстановитьТелоИзСтроки(Результат);
Ответ.Заголовки.Вставить("Content-type", "application/json");

Возврат Ответ;


Получается в ответ уходит массив элементов со всеми полями. А мне надо как-то передать еще информацию, сколько всего элементов передано (МассивJSON.количество())?
1 NcSteel
 
13.02.24
16:59
МассивJSON.Добавить(МассивJSON.Количество())

ДОбавить перед "ЗаписатьJSON"

Так?
2 evorle145
 
13.02.24
17:12
(1) да, формально так работает, но он находится в том же массиве, а надо как доп элемент...
3 AlexeyKh
 
13.02.24
17:39
да куча вариантов, например


ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.УстановитьСтроку(ПараметрыЗаписиJSON);
лкДанные = Новый Структура("Массив, Количество",
    МассивJSON, МассивJSON.Количество());
СериализаторXDTO.ЗаписатьJSON(ЗаписьJSON, лкДанные );
4 Волшебник
 
13.02.24
17:51
Количество лучше передавать в начале
5 evorle145
 
13.02.24
19:09
(3) точно.... чет я затупил. Благодарю!
6 evorle145
 
13.02.24
19:10
(4) понял.. но тут скорее как скажет принимающая сторона..
7 Волшебник
 
13.02.24
21:05
(6) Если принимающая сторона будет заранее знать количество элементов, то можно реализовать последовательное чтение с индикатором прогресса для пользователя. Если надо, конечно