A1sCode библиотека 1С

A1sJ.ToJSON

Назначение: преобразует 1С‑значение в строку JSON с помощью XDTOSerializer.
Опции: компактная запись без пробелов/переносов и вывод результата сообщением.

Сигнатура

Function ToJSON(Value, NoSpaces=True, ShowMessage=False) Export

Как работает (по исходному коду)

 Export //⚙
    JSONWriter = New JSONWriter(); //✏
    If Boolean(NoSpaces) Тогда //⚡
        Settings = New JSONWriterSettings(JSONLineBreak.None, ""); //✏
    Иначе
        Settings = New JSONWriterSettings(JSONLineBreak.Auto, "  "); //✏
    КонецЕсли;
    JSONWriter.SetString(Settings);
    
    Try //✱
        XDTOSerializer.WriteJSON(JSONWriter, Value, XMLTypeAssignment.Explicit);
        JSONText = JSONWriter.Close(); //✏
    Except
        JSONText = ""; //✏
    EndTry;
    
    If Boolean(ShowMessage) Тогда //⚡
        A1sS.Print(JSONText, "JSON", ""); //▶️
    КонецЕсли;
    
    Return JSONText; //↩

Параметры

  • Value — любое сериализуемое значение 1С (числа, строки, Структура, Массив, Соответствие, и т.д.).
  • NoSpaces — булево, по умолчанию Истина; если Ложь — форматирует с отступами.
  • ShowMessage — булево; если Истина — печатает JSON через A1sS.Print.

Возвращает

Строка JSON; при исключении — пустая строка.

Примеры

// Массив
JSON = A1sJ.ToJSON(Новый Массив(1,2,3));      // → "[1,2,3]"
// Структура с отступами
JSON = A1sJ.ToJSON(Новый Структура("X,Y",5,10), Ложь);
// И мгновенно показать
JSON = A1sJ.ToJSON(Объект, Истина, Истина);

Нюансы и ограничения

✅ Использует стандартный XDTOSerializer → совместимость с 1С
❗ Не все типы 1С сериализуются «как есть» (например, ссылки)
❗ При ошибке возвращается пустая строка — проверяйте результат