Link Search Menu Expand Document

JsonОбъект

Стд::Json::JsonОбъект
Базовые типы: Аннотация, Объект
Места применения: Тип

Иерархия типа

graph BT;
JsonОбъект-->Аннотация;
Аннотация-->Объект;

Аннотация JSON. Содержит настройки чтения-записи структур в виде объектов JSON.

Сравнение ссылочное


Примеры

Работа с данными необходимыми для доставки заказа клиенту

@JsonОбъект(ПропускатьПустыеЗначения = Истина, ИгнорироватьНеизвестные = Истина)
структура КонтактыКлиента
    обз пер Имя: Строка
    обз пер Телефон: Строка
    обз пер Регион: Строка = "Москва"
    обз пер Комментарий: Строка?
    обз пер СогласиеНаРассылки: Булево = Истина
;

Чтение:

Предположим, что при чтении структуры из JSON могут быть получены данные в устаревшем формате. Рассмотрим пример с дополнительным полем, которое сейчас не используется - "срокЗаказа".

{
  "Имя": "Петр",
  "Телефон": "+7 (999) 999-99-99",
  "Комментарий": null,
  "СрокЗаказа": "31.12.2023"
}
метод ПрочитатьДанныеСУчетомИнициализацииОтсутствующихПолей(ТекстJson: Строка)
    пер Результат = СериализацияJson.ПрочитатьОбъект(ТекстJson, Тип<КонтактыКлиента>)
    /* значение: {
          Имя = Петр,
          Телефон = +7 (999) 999-99-99,
          Регион = Москва, 
          Комментарий = undefined,
          СогласиеНаРассылки = Истина
    } */    
;

Таким образом, при чтении отсутствующее поле "срокЗаказа" было проигнорировано без выбрасывания ИсключениеЧтенияJson. Отсутствующие в JSON поля "регион" и "согласиеНаРассылки" были инициализированы значениями по умолчанию.

Запись:

При записи мы хотим облегчить получившийся объект JSON пропуская все пустые поля, а также поля значение которых неопределено.

метод ЗаписатьСтруктуруСУчетомИнициализацииОтсутствующихПолей()
    пер Контакты = новый КонтактыКлиента(
        "Василий",
        "+7 (999) 999-99-99",
        "",
        Undefined,
        Ложь
    )
            
    пер Результат = СериализацияJson.ЗаписатьОбъект(Контакты)
;

Значение результата:

{
  "Имя": "Василий",
  "Телефон": "+7 (999) 999-99-99",
  "СогласиеНаРассылки": false
}

Список унаследованных методов

Объект