Стд::Json::СериализацияJson
Тип-одиночка
Методы для чтения и записи объектов JSON целиком.
Сравнение ссылочное
Иерархия типа
Базовые типы: Объект, Одиночка
Методы
ЗаписатьОбъект
Перегрузка:
ЗаписатьОбъект(Приемник:
ПотокЗаписи|
ЗаписьJson, Значение:
Объект?, Настройки:
НастройкиЗаписиОбъектовJson)
Записывает объект Значение
в JSON с настройками Настройки
и возвращает результат.
Можно записывать объекты любого типа объявленного в коде (структура, перечисление) и некоторых встроенных типов:
- Коллекция:
- Соответствие,
- Строка,
- Число,
- Булево,
- Момент,
- ДатаВремя,
- Дата,
- Время,
- Длительность,
- Ууид,
- Версия,
- Перечисление,
- Байты.
Сопоставление типов происходит точно так же, как описано в методе ПрочитатьОбъект.
Примеры
структура КлиентыСтруктура
обз пер Клиенты: Множество<КлиентСтруктура>
;
структура КлиентСтруктура
обз пер Ид: Число
обз пер Имя: Строка
обз пер Отчество: Строка
обз пер Фамилия: Строка
;
метод ЗаписатьОбъектВСтрокуJson(): Строка
знч КлиентыОбъект = новый КлиентыСтруктура(новый Множество<КлиентСтруктура>())
КлиентыОбъект.Клиенты.Добавить(новый КлиентСтруктура(1, "Иван", "Иванович", "Иванов"))
КлиентыОбъект.Клиенты.Добавить(новый КлиентСтруктура(2, "Петр", "Петрович", "Петров"))
знч Результат = СериализацияJson.ЗаписатьОбъект(КлиентыОбъект)
возврат Результат
;
Результат:
{
"Клиенты" : [
{
"Ид" : 1,
"Имя" : "Иван",
"Отчество" : "Иванович",
"Фамилия" : "Иванов"
},
{
"Ид" : 2,
"Имя" : "Петр",
"Отчество" : "Петрович",
"Фамилия" : "Петров"
}
]
}
ЗаписатьОбъект
Перегрузка:
ЗаписатьОбъект(Значение:
Объект?, Настройки:
НастройкиЗаписиОбъектовJson):
Строка
Записывает объект Значение
в JSON с настройками Настройки
в поток Приемник
.
Если Приемник
типа ЗаписьJson
, запись будет в поток, который использовался для создания этого объекта.
Можно записывать объекты любого типа объявленного в коде (структура, перечисление) и некоторых встроенных типов:
- Коллекция:
- Соответствие,
- Строка,
- Число,
- Булево,
- Момент,
- ДатаВремя,
- Дата,
- Время,
- Длительность,
- Версия,
- Ууид,
- Перечисление,
- Байты.
Сопоставление типов происходит точно так же, как описано в методе ПрочитатьОбъект.
Примеры
метод ЗаписатьОбъектВJsonЧерезПоток(): Строка
пер Объект = ["значение1", "значение2"]
исп Поток = новый СтроковыйПотокЗаписи()
СериализацияJson.ЗаписатьОбъект(Поток, Объект)
возврат Поток.ВСтроку()
;
Результат:
[
"значение1",
"значение2"
]
структура КлиентСтрукту ра
обз пер Ид: Число
обз пер Имя: Строка
обз пер Отчество: Строка
обз пер Фамилия: Строка
;
метод ЗаписатьОбъектВJsonЧерезПоток(): Строка
исп Поток = новый СтроковыйПотокЗаписи()
знч Запись = новый ЗаписьJson(Поток)
Запись.ЗаписатьНачалоОбъекта()
Запись.Записать("ВремяФормирования", {2024-10-06T12:57:35})
знч Клиенты = новый Массив<КлиентСтруктура>()
Клиенты.Добавить(новый КлиентСтруктура(1, "Иван", "Иванович", "Иванов"))
Клиенты.Добавить(новый КлиентСтруктура(2, "Петр", "Петрович", "Петров"))
Запись.ЗаписатьИмяСвойства("Клиенты")
СериализацияJson.ЗаписатьОбъект(Запись, Клиенты)
Запись.ЗаписатьКонецОбъекта()
возврат Поток.ВСтроку()
;
Результат:
{
"ВремяФормирования": "2024-10-06T12:57:35",
"Клиенты" : [
{
"Ид" : 1,
"Имя" : "Иван",
"Отчество" : "Иванович",
"Фамилия" : "Иванов"
},
{
"Ид" : 2,
"Имя" : "Петр",
"Отчество" : "Петрович",
"Фамилия" : "Петров"
}
]
}
ПрочитатьМассив
Читает массив объектов из
Источник
.
Вызывает метод
ПрочитатьОбъект с параметром Тип = Тип<Массив<Объект?>>) и кодировкой
Кодировка
.
Примеры
Исходный JSON:
[
{
"Имя1": "Значение1"
},
{
"Имя2": "Значение2"
}
]
метод ПрочитатьМассивИзСтрокиJson(СтрокаJson: Строка): Строка
знч Результат = СериализацияJson.ПрочитатьМассив(СтрокаJson)
возврат Результат.ВСтроку()
;
Результат:
[{Имя1: Значение1}, {Имя2: Значение2}]
ПрочитатьОбъект
Перегрузка:
ПрочитатьОбъект<ТипОбъекта>(Источник:
ПотокЧтения|
ЧтениеJson|
Строка, Тип:
Тип<ТипОбъекта>, Настройки:
НастройкиЧтенияОбъектовJson, Кодировка:
Кодировка|
Строка = Кодировка.Utf8): ТипОбъекта
Считывает объект JSON из Источник
в объект типа Тип
с настройками Настройки
и кодировкой Кодировка
.
Можно читать объекты любого типа, объявленного в коде (структура, перечисление), и некоторых встроенных типов:
- Коллекция:
- Соответствие,
- Строка,
- Число,
- Булево,
- Момент,
- ДатаВремя,
- Дата,
- Время,
- Длительность,
- Ууид,
- Версия,
- Перечисление,
- Байты.
Если значение типов объекта не указано, тогда чтение выполняется в Соответствие.
Сопоставление типов происходит точно так же, как описано в методе ПрочитатьОбъект.
Исключения
ИсключениеЧтенияJson - если при чтении произойдет неоднозначность чтения (неявное чтение). Например, при чтении значения
"2000-01-01"
в типы Дата, ДатаВремя нельзя однозначно определить какой тип должен быть прочитан.
ПрочитатьОбъект
ТипОбъекта: Тип считываемого объекта.
Перегрузка:
ПрочитатьОбъект(Источник: ПотокЧтения|Строка, Тип: Коллекция<Тип>, Настройки: НастройкиЧтенияОбъектовJson, Кодировка: Кодировка|Строка = Кодировка.Utf8): Объект?
Считывает объект JSON из Источник
в объект типа <ТипОбъекта>
с настройками Настройки
и кодировкой Кодировка
(если чтение происходит из потока).
Можно читать объекты любого типа, объявленного в коде (структура, перечисление), и некоторых встроенных типов:
- Коллекция:
- Соответствие,
- Строка,
- Число,
- Булево,
- Момент,
- ДатаВремя,
- Дата,
- Время,
- Длительность,
- Ууид,
- Версия,
- Перечисление,
- Байты,
- Диапазон,
- ЗакрытыйДиапазон.
Если значение типа объекта не указано, тогда чтение выполняется в Соответствие.
Сопоставление полей и свойств происходит следующим образом:
- Любое число (1, 1.56, 0) - отображается в Число,
true
, false
- отображаются в Булево,
null
- отображаются в Неопределено,
"Любая строка"
- отображается в Строка,
- Объект
{ ... }
- отобр ажается в структуру либо в Соответствие,
- Массив
[ ... ]
- отображается в Массив или Множество,
- Строка в формате Момент или ДатаВремя отображается в Момент или ДатаВремя,
- Строка в формате Ууид отображается в Ууид,
- Строка в формате Версия отображается в Версия.
Имя свойства в структуре сопоставляется с именем свойства в исходном JSON.
Если необходимого поля структуры нет в читаемом тексте JSON, тогда значение поле устанавливается в Неопределено
.
Исключения
ИсключениеЧтенияJson - если при чтении произойдет неоднозн ачность чтения (неявное чтение). Например, при чтении значения
"2000-01-01"
в типы Дата, ДатаВремя нельзя однозначно определить какой тип должен быть прочитан.
Примеры
Исходный JSON:
[
{
"Ид": 1,
"Имя": "Иван",
"Отчество": "Иванович",
"Фамилия": "Иванов"
},
{
"Ид": 2,
"Имя": "Петр",
"Отчество": "Петрович",
"Фамилия": "Петров"
}
]
структура КлиентСтруктура
обз пер Ид: Число
обз пер Имя: Строка
обз пер Отчество: Строка
обз пер Фамилия: Строка
;
метод ПрочитатьОбъектИзСтрокиJson(СтрокаJson: Строка): Строка
знч Результат = СериализацияJson.ПрочитатьОбъект(СтрокаJson, Тип<Множество<КлиентСтруктура>>)
возврат Результат.ВСтроку()
;
Результат:
{ {Ид=1, Имя=Иван, Отчество=Иванович, Фамилия=Иванов}, {Ид=2, Имя=Петр, Отчество=Петрович, Фамилия=Петров} }
Исходный JSON#2:
{
"ВремяФормирования": "2024-10-06T12:57:35",
"Клиенты": [
{
"Ид": 1,
"Имя": "Иван",
"Отчество": "Иванович",
"Фамилия": "Иванов"
},
{
"Ид": 2,
"Имя": "Петр",
"Отчество": "Петрович",
"Фамилия": "Петров"
}
]
}
структура КлиентСтруктура
обз пер Ид: Число
обз пер Имя: Строка
обз пер Отчество: Строка
обз пер Фамилия: Строка
;
метод ПрочитатьОбъектИзЧтениеJson(СтрокаJson: Строка): Строка
знч Чтение = новый ЧтениеJson(СтрокаJson)
Чтение.Следующий()
Чтение.Следующий()
Чтение.Следующий()
знч ВремяФормирования = Чтение.ПрочитатьСодержимоеКакДатаВремя()
Чтение.Следующий()
Чтение.Следующий()
знч Результат: Массив<КлиентСтруктура> = СериализацияJson.ПрочитатьОбъект(Чтение, Тип<Массив<КлиентСтруктура>>)
возврат Результат.ВСтроку()
;
Результат:
[ {Ид=1, Имя=Иван, Отчество=Иванович, Фамилия=Иванов}, {Ид=2, Имя=Петр, Отчество=Петрович, Фамилия=Петров} ]
ПрочитатьСоответствие
Читает соответствие из
Источник
.
Вызывает метод
ПрочитатьОбъект с параметром Тип = Тип<Соответствие<Строка, Объект?>>) и кодировкой
Кодировка
.
Примеры
Исходный JSON:
{
"Имя": [
{
"Имя1": "Значение1"
},
{
"Имя2": "Значение2"
}
]
}
метод ПрочитатьСоответствиеИзСтрокиJson(СтрокаJson: Строка): Строка
знч Результат = СериализацияJson.ПрочитатьСоответствие(СтрокаJson)
возврат Результат.ВСтроку()
;
Результат:
{Имя: [{Имя1: Значение1}, {Имя2: Значение2}]}
Список унаследованных методов
Объект
ВСтроку, ПолучитьТип, Представление