ЗаписьJson
Стд::Json::ЗаписьJson
Объект для потоковой записи данных в формате JSON. Зап исывает значения следующим образом:
- Булево как
ИстинаилиЛожь - Байты как строку в формате base64
- Неопределено как "null"
- ДатаВремя в формате ISO-8601 (
"гггг-ММ-дд'T'ЧЧ:мм:сс.ССС").- Пример:
"2020-04-16T23:30:40.345".
- Пример:
- Момент в формате, указанном в ФорматМомента
- Дата в формате ISO-8601 (
"YYYY-MM-DD").- Пример:
2020-04-30
- Пример:
- Время в формате ISO-8601 (
"ЧЧ:мм:сс.ССС").- Пример:
"23:30:40.345".
- Пример:
- Длительность в формате ISO-8601 (
"чч:мм:сс.ССС", где "чч" - суммарное с днями к оличество часов).- Пример:
"60:12:30.653".
- Пример:
Сравнение
Ссылочное
Иерархия типа
Базовые типы: Объект
Примеры
Общие примеры
Запись JSON
Строковое представление исходного объекта для записи в JSON
{
{Ид=d7ab92e4-484a-4e7c-a942-f9de21ded45b, ТабельныйНомер=100101, Фамилия=Иванов, Имя=Иван, Отчество=Иванович,
ДатаНачалаРаботы=2018-09-24, Должность=Разработчик, ПерсональныеДанные={ ДатаРождения=1977-11-23, ВоеннаяСлужба=true,
АдресРегистрации={НаселенныйПункт=г. Москва, Улица=ул. Проспект Мира, Дом=11а, Квартира=321},
ТелефонныйНомер={+79991112233, 84951234567}}},
{Ид=cfdad0fb-84c5-417a-9aef-a90a1986598c, ТабельныйНомер=100102, Фамилия=Петров, Имя=Петр, Отчество=Петрович,
ДатаНачалаРаботы=2021-02-10, Должность=Специалист техподдержки, ПерсональныеДанные={ДатаРождения=1990-05-01,
ВоеннаяСлужба=false, АдресРегистрации={НаселенныйПункт=г. Неизвестный, Улица=ул. Ленина, Дом=5, Квартира=undefined},
ТелефонныйНомер={+79993332211}}}
}
Код записи JSON
// Структура для хранения сообщения Сотрудники
структура СтруктураСотрудникиЗапись
обз пер Сотрудники: Множество<СтруктураСотрудникЗапись>
;
// Структура для хранения сотрудника
структура СтруктураСотрудникЗапись
пер Ид: Ууид
пер ТабельныйНомер: Число
пер Фамилия: Строка
пер Имя: Строка
пер Отчество: Строка
пер ДатаНачалаРаботы: Дата
пер Должность: Строка
пер ПерсональныеДанные: СтруктураПерсональныеДанныеЗапись
;
// Структура для хранения персональных данных сотрудника
// Для необязательных полей используется составной тип с Неопределено
структура СтруктураПерсональныеДанныеЗапись
пер ДатаРождения: Дата
пер ВоеннаяСлужба: Булево
пер АдресРегистрации: СтруктураАдресРегистрацииЗапись
пер ТелефонныйНомер: Множество<Строка>?
;
// Структура для хранения адреса регис трации
// Для необязательных полей используется составной тип с Неопределено
структура СтруктураАдресРегистрацииЗапись
пер НаселенныйПункт: Строка
пер Улица: Строка
пер Дом: Строка
пер Квартира: Число?
;
метод ЗаписатьJsonСотрудники(Сотрудники: СтруктураСотрудникиЗапись): Строка
// Создание потока записи в строку, будет закрыт автоматически, так как объявлен через "исп"
исп ПотокЗаписи = новый СтроковыйПотокЗаписи()
// Отключение отступов и переносов в результирующем JSON
знч НастройкиЗаписиJson = новый НастройкиЗаписиJson()
НастройкиЗаписиJson.ПереносСтрок = ПереносСтрокJson.Отсутствует
// Создание объекта записи JSON
знч Запись = новый ЗаписьJson(ПотокЗаписи, НастройкиЗаписиJson)
Запись.ЗаписатьНачалоМассива()
для Сотрудник из Сотрудники.Сотрудники
Запись
// Начало объекта Сотрудник
.ЗаписатьНачалоОбъекта()
.Записать("Ид", Сотрудник.Ид)
.Записать("Фамилия", Сотрудник.Фамилия)
.Записать("Имя", Сотрудник.Имя)
.Записать("Отчество", Сотрудник.Отчество)
.Записать("ДатаНачалаРаботы", Сотрудник.ДатаНачалаРаботы)
.Записать("Должность", Сотрудник.Должность)
// Начало объекта ПерсональныеДанные
.ЗаписатьИмяСвойства("ПерсональныеДанные")
.ЗаписатьНачалоОбъекта()
.Записать("ДатаРождения", Сотрудник.ПерсональныеДанные.ДатаРождения)
.Записать("ВоеннаяСлужба", Сотрудник.ПерсональныеДанные.ВоеннаяСлужба)
// Начало объекта АдресРегистрации
.ЗаписатьИмяСвойства("АдресРегистрации")
.ЗаписатьНачалоОбъекта()
.Записать("НаселенныйПункт", Сотрудник.ПерсональныеДанные.АдресРегистрации.НаселенныйПункт)
.Записать("Улица", Сотрудник.ПерсональныеДанные.АдресРегистрации.Улица)
.Записать("Дом", Сотрудник.ПерсональныеДанные.АдресРегистрации.Дом)
//Необязательное свойство Квартира
если Сотрудник.ПерсональныеДанные.АдресРегистрации.Квартира != Неопределено
Запись.Записать("Квартира", Сотрудник.ПерсональныеДанные.АдресРегистрации.Квартира)
;
// Конец объекта АдресРегистрации
Запись.ЗаписатьКонецОбъекта()
// Начало массива ТелефонныйНомер
.ЗаписатьИмяСвойства("ТелефонныйНомер")
.ЗаписатьНачалоМассива()
// Значения телефонов в массиве
Сотрудник.ПерсональныеДанные.ТелефонныйНомер.ДляКаждого(Телефон -> Запись.Записать(Телефон))
// Конец массива ТелефонныйНомер
Запись.ЗаписатьКонецМассива()
// Конец объекта ПерсональныеДанные
.ЗаписатьКонецОбъекта()
// Конец объекта Сотрудник
.ЗаписатьКонецОбъекта()
;
Запись.ЗаписатьКонецМассива()
возврат ПотокЗаписи.ВСтроку()
;
Результат записи в строку JSON
[
{
"Ид": "d7ab92e4-484a-4e7c-a942-f9de21ded45b",
"ТабельныйНомер": 100101,
"Фамилия": "Иванов",
"Имя": "Иван",
"Отчество": "Иванович",
"ДатаНачалаРаботы": "2018-09-24",
"Должность": "Разработчик",
"ПерсональныеДанные": {
"ДатаРождения": "1977-11-23",
"ВоеннаяСлужба": true,
"АдресРегистрации": {
"НаселенныйПункт": "г. Москва",
"Улица": "ул. Проспект Мира",
"Дом": "11а",
"Квартира": 321
},
"ТелефонныйНомер": [
"+79991112233",
"84951234567"
]
}
},
{
"Ид": "cfdad0fb-84c5-417a-9aef-a90a1986598c",
"ТабельныйНомер": 100102,
"Фамилия": "Петров",
"Имя": "Петр",
"Отчество": "Петрович",
"ДатаНачалаРаботы": "2021-02-10",
"Должность": "Специалист техподдержки",
"ПерсональныеДанные": {
"ДатаРождения": "1990-05-01",
"ВоеннаяСлужба": false,
"АдресРегистрации": {
"НаселенныйПункт": "г. Неизвестный",
"Улица": "ул. Ленина",
"Дом": "5"
},
"ТелефонныйНомер": [
"+79993332211"
]
}
}
]
Запись различных типов
Код записи JSON
метод ЗаписатьJsonТипы(): Строка
исп ПотокЗаписи = новый СтроковыйПотокЗаписи()
// Настройка формата Момент
знч НастройкиЗаписиJson = новый НастройкиЗаписиJson()
НастройкиЗаписиJson.ФорматМомента = ФорматМоментаJson.JavaScript
знч Запись = новый ЗаписьJson(ПотокЗаписи, НастройкиЗаписиJson)
Запись
.ЗаписатьНачалоМассива()
// Массив строк
.ЗаписатьНачалоМассива()
.Записать("значение1")
.Записать("значение2")
.ЗаписатьКонецМассива()
// Объект со свойством и строковым значением
.ЗаписатьНачалоОбъекта()
.Записать("Имя", "значение")
.ЗаписатьКонецОбъекта()
// Объект со свойствами различных типов
.ЗаписатьНачалоОбъекта()
.Записать("Строка", "Строка")
.Записать("Булево", Истина)
.Записать("БайтыBase64", Байты{74657374})
.Записать("Время", Время{23:59:59.999})
.Записать("Дата", Дата{2022-12-31})
.Записать("ДатаВремя", ДатаВремя{2022-12-31 23:59:59.999})
.Записать("Длительность", 144ч5мс)
.Записать("МоментJavascript", Момент{2020-04-16T20:30:40.345Z})
.Записать("Ууид", Ууид{d7ab92e4-484a-4e7c-a942-f9de21ded45b})
.Записать("Число", 123.45)
.Записать("Неопределено", Неопределено)
.ЗаписатьКонецОбъекта()
.ЗаписатьКонецМассива()
возврат ПотокЗаписи.ВСтроку()
;
Результат записи в строку JSON
[
[
"значение1",
"значение2"
],
{
"Имя" : "значение"
},
{
"Строка" : "Строка",
"Булево" : true,
"БайтыBase64" : "dGVzdA==",
"Время" : "23:59:59.999",
"Дата" : "2022-12-31",
"ДатаВремя" : "2022-12-31T23:59:59.999",
"Длительность" : "PT144H0.005S",
"МоментJavascript" : "1587069040345",
"Ууид" : "d7ab92e4-484a-4e7c-a942-f9de21ded45b",
"Число" : 123.45,
"Неопределено" : null
}
]
Конструкторы
ЗаписьJson
ЗаписьJson(
Поток: ПотокЗаписи,
НастройкиЗаписи: НастройкиЗаписиJson,
Кодировка: Кодировка|Строка = Кодировка.Utf8)Поток с настройками НастройкиЗаписи и кодировкой Кодировка.
Методы
Записать
Записывает значение
Значение в JSON.
Возвращает текущий экземпляр.
Записать
Записывает имя свойства
ИмяСвойства и значение Значение в JSON.
Возвращает текущий экземпляр.
ЗаписатьNull
ЗаписатьNull(): ЗаписьJsonПерегрузка
ЗаписатьNull(ИмяСвойства: Строка): ЗаписьJson
ЗаписатьNull
ЗаписатьNull(ИмяСвойства: Строка): ЗаписьJsonИмяСвойства и значение "null".
Возвращает текущий экземпляр.
Перегрузка
ЗаписатьNull(): ЗаписьJson
ЗаписатьБезОбработки
ЗаписатьБезОбработки(Текст: Строка): ЗаписьJsonТекст без обработки.
Следует быть осторожным с применением данного метода, так как з аписываемый фрагмент не проверяется, что может сделать результирующий JSON синтаксически некорректным.
ЗаписатьИмяСвойства
ЗаписатьИмяСвойства(ИмяСвойства: Строка): ЗаписьJsonИмяСвойства в JSON.
Возвращает текущий экземпляр.
ЗаписатьКонецМассива
ЗаписатьКонецМассива(): ЗаписьJson