Перейти к основному содержимому

Запись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, Квартира=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. Возвращает текущий экземпляр.

Перегрузка
Записать(ИмяСвойства: Строка, Значение: Булево|Байты|Число|Строка|Дата|ДатаВремя|Длительность|Момент|Время|Ууид|Версия|?): ЗаписьJson


Записать

Записывает имя свойства ИмяСвойства и значение Значение в JSON. Возвращает текущий экземпляр.

Перегрузка
Записать(Значение: Булево|Байты|Число|Строка|Дата|ДатаВремя|Длительность|Момент|Время|Ууид|Версия|?): ЗаписьJson


ЗаписатьNull

ЗаписатьNull(): ЗаписьJson
Записывает значение "null". Возвращает текущий экземпляр.

Перегрузка
ЗаписатьNull(ИмяСвойства: Строка): ЗаписьJson


ЗаписатьNull

ЗаписатьNull(ИмяСвойства: Строка): ЗаписьJson
Записывает имя свойства ИмяСвойства и значение "null". Возвращает текущий экземпляр.

Перегрузка
ЗаписатьNull(): ЗаписьJson


ЗаписатьБезОбработки

ЗаписатьБезОбработки(Текст: Строка): ЗаписьJson
Записывает фрагмент JSON Текст без обработки. Следует быть осторожным с применением данного метода, так как записываемый фрагмент не проверяется, что может сделать результирующий JSON синтаксически некорректным.


ЗаписатьИмяСвойства

ЗаписатьИмяСвойства(ИмяСвойства: Строка): ЗаписьJson
Записывает имя свойства (ключ) ИмяСвойства в JSON. Возвращает текущий экземпляр.


ЗаписатьКонецМассива

ЗаписатьКонецМассива(): ЗаписьJson
Записывает конец массива JSON ("]"). Возвращает текущий экземпляр.


ЗаписатьКонецОбъекта

ЗаписатьКонецОбъекта(): ЗаписьJson
Записывает конец объекта JSON ("}"). Возвращает текущий экземпляр.


ЗаписатьНачалоМассива

ЗаписатьНачалоМассива(): ЗаписьJson
Записывает начало массива JSON ("["). Возвращает текущий экземпляр.


ЗаписатьНачалоОбъекта

ЗаписатьНачалоОбъекта(): ЗаписьJson
Записывает начало объекта JSON ("{"). Возвращает текущий экземпляр.


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

Объект

ВСтроку

ПолучитьТип

Представление