ЗаписьJson добавляет в текст последовательность \r\n

1. webester 26 22.08.19 08:27 Сейчас в теме
Всем привет! Не могу сформировать валидный джсон при формировании вот такого кода:
 СтруктураНаСервер = Новый Структура("Data,Extension", 
                                            Base64Строка(Выборка.ДвоичныеДанныеФайла.Получить()),
                                               Выборка.Расширение);
                                            
        ЗаписьДжсон = Новый ЗаписьJSON;
        ЗаписьДжсон.УстановитьСтроку();
        ЗаписатьJSON(ЗаписьДжсон, СтруктураНаСервер);



ЗаписьJson добавляет последовательность \r\n в места переноса строк. Если взять текст до записи в json, то там такой последовательности нет. Подскажите пожалуйста, как избежать такого поведения? Отключать перенос строк и экранирование переносов строк пробовал, не помогает.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. chemezov 47 22.08.19 08:30 Сейчас в теме
Экранировать символы нужно
3. chemezov 47 22.08.19 08:32 Сейчас в теме
ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.Параметры.ПереносСтрок
4. webester 26 22.08.19 08:38 Сейчас в теме
(3)Так не работает. Это свойство только на чтение. Работает так:
ПараметрыДжсон = Новый ПараметрыЗаписиJSON(ПереносСтрокJSON.Нет);
ЗаписьДжсон.УстановитьСтроку(ПараметрыДжсон);
Там 4 варианта: Unix, Windows, Авто и Нет. Я попробовал все 4. Нет никаких изменений.
5. chemezov 47 26.08.19 02:07 Сейчас в теме
Я тут вычитал что вообще никак не поставить перенос строки в JSON
https://ru.stackoverflow.com/questions/749657/%D0%9F%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1­%81-%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8-%D0%B2-json

Скорее всего решением будет вот такой вариант:
https://forum.infostart.ru/forum9/topic147739/

Функция MyJSONМаскировать(Знач Стр)
    Стр=СтрЗаменить(Стр,"\","\\");
    Стр=СтрЗаменить(Стр,Символы.ПС,"\n");
    Стр=СтрЗаменить(Стр,Символы.ВК,"\r");
    Стр=СтрЗаменить(Стр,Символы.Таб,"\t");
    Стр=СтрЗаменить(Стр,"/","\/");
    Стр=СтрЗаменить(Стр,"""","\""");
    Возврат Стр
КонецФункции
Показать
6. webester 26 04.09.19 04:15 Сейчас в теме
(5)Если поднять глаза на заголовок темы, то можно увидеть, что проблема была как раз в том, что штатный парсер который дампит строку в json, делает именно то, что вы показали в коде, он самостоятельно экранирует символы переноса строк именно тем способом как вы показываете, нет нужды делать эту пакость вручную. Это как раз все портит. И как это отключить я не нашел. Мне не нужны \r\n в base64. Если переносов не должно быть в json их надо удалять, а не экранировать. Эту строку потом не декодировать обратно в бинарник, без обработки. Решение - удалять вручную, все переносы строк, которые Base64Строка ставит зачем-то через каждые 32 символа.
СтрЗаменить(СтрЗаменить(Base64Строка(Выборка.ДвоичныеДанныеФайла.Получить()),Символы.ПС,""),Символы.ВК,"")
EvgeTrofi; NicolasCage; tps_01; +3 Ответить
7. tps_01 62 25.06.20 15:56 Сейчас в теме
(6)
Если поднять глаза на заголовок темы

Проблема, как вы правильно написали в комментарии, в том, что функция Base64Строка вставляет лишние символы, а не ЗаписьJson.
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот