Имя: Пароль:
1C
1С v8
Не ладится с JSON и спец.символы
0 zippygrill
 
16.10.20
16:02
""WINDOWS-1251"" превращается в \"WINDOWS-1251\"
Как только не крутил ПараметрыЗаписиJSON, нужного результата не могу добиться.
Невидимый перенос строки в текстовый документ всплывает  естессно как \n в json    
Как их победить красиво..


        ТекстXML = Новый ТекстовыйДокумент;
    ТекстXML.ДобавитьСтроку("<?xml version=1.0 encoding=""WINDOWS-1251"" ?>");
    ТекстДляЗаписи = ТекстXML.ПолучитьТекст();
        //<?xml version=1.0 encoding="WINDOWS-1251" ?>

    ЗаписьJSON.ЗаписатьИмяСвойства("xmlStr");
    ЗаписьJSON.ЗаписатьЗначение(ТекстДляЗаписи);
    СтрJSON = ЗаписьJSON.Закрыть();
        //"xmlStr": "<?xml version=1.0 encoding=\"WINDOWS-1251\" ?>\n"
1 asady
 
16.10.20
16:06
(0) СтрЗаменить(СтрокаJSON,Символы.ПС,"");
2 zippygrill
 
16.10.20
16:07
(1) с ПС легче всего..а вот остальные
3 Garykom
 
гуру
16.10.20
16:10
(0) это не баг это фича https://www.json.org/json-ru.html
4 Garykom
 
гуру
16.10.20
16:13
(0) И вопрос нафуя ты XML через JSON пишешь?
5 Garykom
 
гуру
16.10.20
16:14
(4)+ Если надо, обычно юзают Base64
6 Garykom
 
гуру
16.10.20
16:14
(5)+ "xmlStr": Base65("<?xml version=1.0 encoding=\"WINDOWS-1251\" ?>\n")
7 Garykom
 
гуру
16.10.20
16:14
(6) *Base64("<?xml version=1.0 encoding=\"WINDOWS-1251\" ?>\n")
8 zippygrill
 
16.10.20
16:15
(4) ну вот на той стороне так api написали
9 zippygrill
 
16.10.20
16:15
(7) а base65 - это следующий уровень скиллов?))
10 Garykom
 
гуру
16.10.20
16:17
(9) дык хоть Base66 или даже Base666 при желании

По сути это банальная замена по основанию, как двоичная, десятичная, шестнадцатиричная, 64-ричная и т.д. система счисления
11 Garykom
 
гуру
16.10.20
16:20
(8) интересный api, не поделишься? тоже хочу попробовать че они там курят
12 Lexey_
 
16.10.20
16:34
(0) ЗаписьJSON.ПроверятьСтруктуру = Ложь;
...
ЗаписьJSON.ЗаписатьБезОбработки(ТекстДляЗаписи);
13 zippygrill
 
16.10.20
16:37
(11) возможно студенты писали этот АПИ судя по тому как указали атрибуты, потому что xsd схему/пакет xdto я не могу наверстать на его основе
14 VKS
 
16.10.20
16:38
Кстати, у меня тоже не получилось победить экранизацию символов. Все параметры перепробовал, может релиз такой. Попробуйте у себя, у записи JSON есть параметры, с ними поиграть.
Если получится, напишите номер релиза

Мне же пришлось через СтрЗаменить костылить
15 VKS
 
16.10.20
16:40
где-то тут
ПараметрыJSON = Новый ПараметрыЗаписиJSON(
                    ПереносСтрокJSON.Авто, // ПереносСтрок.
                    " ", // СимволыОтступа.
                    Истина, // ИспользоватьДвойныеКавычки.
                    ЭкранированиеСимволовJSON.Нет, // ЭкранированиеСимволов.
                    Ложь, // ЭкранироватьУгловыеСкобки.
                    Ложь, // ЭкранироватьРазделителиСтрок.
                    Ложь, // ЭкранироватьАмперсанд.
                    Ложь, // ЭкранироватьОдинарныеКавычки.
                    Ложь); // ЭкранироватьСлеш.
16 zippygrill
 
16.10.20
16:46
(7) Base64Значение?
17 zippygrill
 
16.10.20
16:46
(15) да я уже наигрался
18 zippygrill
 
16.10.20
17:00
(12) почти то что надо.
записал так //"xmlStr": <?xml version=1.0 encoding="WINDOWS-1251" ?>
надо так //"xmlStr": "<?xml version=1.0 encoding="WINDOWS-1251\" ?>"
19 Lexey_
 
16.10.20
17:13
(18) добавь кавычки ЗаписьJSON.ЗаписатьБезОбработки("""" + ТекстДляЗаписи + """");
20 ДедМорроз
 
16.10.20
17:18
Вообще-то,любой символ json можно писать кодом через \x и две цифры для байта и любой парсер json должен их кушать,если не кушает,то это не json парсер,а txt парсер,тогда пишите ему через ЗаписьТекста и не скачайте json.