СериализацияJson
Тип-одиночка Стд::Json::СериализацияJson Базовые типы: Объект |
Иерархия типа
graph BT;
СериализацияJson-->Объект;
Методы для чтения и записи объектов JSON целиком.
Сравнение ссылочное
Методы
ЗаписатьОбъект
ЗаписатьОбъект(
Значение: Объект?,
Настройки: НастройкиЗаписиОбъектовJson
): Строка
Перегрузка: ЗаписатьОбъект(Поток: ПотокЗаписи, Значение: Объект?, Настройки: НастройкиЗаписиОбъектовJson) |
Записывает объект Значение
в JSON с настройками Настройки
и возвращает результат. Можно записывать объекты любого типа объявленного в коде (структура, перечисление) и некоторых встроенных типов:
- Коллекция:
- Соответствие,
- Строка,
- Число,
- Булево,
- Момент,
- ДатаВремя,
- Дата,
- Время,
- Длительность,
- Ууид,
- Версия,
- Перечисление,
- Байты.
Сопоставление типов происходит точно так же, как описано в методе ПрочитатьОбъект.
Примеры
структура СтруктураКлиенты
обз пер Клиенты: Множество<СтруктураКлиент>
;
структура СтруктураКлиент
обз пер Ид: Число
обз пер Имя: Строка
обз пер Отчество: Строка
обз пер Фамилия: Строка
;
метод ЗаписатьОбъектВСтрокуJson(): Строка
знч КлиентыОбъект = новый СтруктураКлиенты(новый Множество<СтруктураКлиент>())
КлиентыОбъект.Клиенты.Добавить(новый СтруктураКлиент(1, "Иван", "Иванович", "Иванов"))
КлиентыОбъект.Клиенты.Добавить(новый СтруктураКлиент(2, "Петр", "Петрович", "Петров"))
знч Результат = СериализацияJson.ЗаписатьОбъект(КлиентыОбъект)
возврат Результат
;
Результат:
{
"Клиенты" : [
{
"Ид" : 1,
"Имя" : "Иван",
"Отчество" : "Иванович",
"Фамилия" : "Иванов"
},
{
"Ид" : 2,
"Имя" : "Петр",
"Отчество" : "Петрович",
"Фамилия" : "Петров"
}
]
}
ЗаписатьОбъект
ЗаписатьОбъект(
Поток: ПотокЗаписи,
Значение: Объект?,
Настройки: НастройкиЗаписиОбъектовJson)
Перегрузка: ЗаписатьОбъект(Значение: Объект?, Настройки: НастройкиЗаписиОбъектовJson): Строка |
Записывает объект Значение
в JSON с настройками Настройки
в поток Поток
. Можно записывать объекты любого типа объявленного в коде (структура, перечисление) и некоторых встроенных типов:
- Коллекция:
- Соответствие,
- Строка,
- Число,
- Булево,
- Момент,
- ДатаВремя,
- Дата,
- Время,
- Длительность,
- Версия,
- Ууид,
- Перечисление,
- Байты.
Сопоставление типов происходит точно так же, как описано в методе ПрочитатьОбъект.
Примеры
метод ЗаписатьОбъектВJsonЧерезПоток(): Строка
пер Объект = ["значение1", "значение2"]
исп Поток = новый ВременныйПотокЗаписи()
СериализацияJson.ЗаписатьОбъект(Поток, Объект)
возврат Поток.ОткрытьПотокЧтения().ПрочитатьКакСтроку()
;
Результат:
[
"значение1",
"значение2"
]
ПрочитатьМассив
Читает массив объектов из Источник
. Вызывает метод ПрочитатьОбъект с параметром Тип = Тип<Массив<Объект?») и кодировкой Кодировка
.
Примеры
Исходный JSON:
[
{
"Имя1": "Значение1"
},
{
"Имя2": "Значение2"
}
]
метод ПрочитатьМассивИзСтрокиJson(СтрокаJson: Строка): Строка
знч Результат = СериализацияJson.ПрочитатьМассив(СтрокаJson)
возврат Результат.ВСтроку()
;
Результат:
[{Имя1: Значение1}, {Имя2: Значение2}]
ПрочитатьОбъект
ПрочитатьОбъект(
Источник: ПотокЧтения|Строка,
Тип: Коллекция<Тип>,
Настройки: НастройкиЧтенияОбъектовJson,
Кодировка: Кодировка|Строка = Кодировка.Utf8
): Объект?
Перегрузка: ПрочитатьОбъект<ТипОбъекта>(Источник: ПотокЧтения|Строка, Тип: Тип<ТипОбъекта>, Настройки: НастройкиЧтенияОбъектовJson, Кодировка: Кодировка|Строка = Кодировка.Utf8): ТипОбъекта |
Считывает объект JSON из Источник
в объект типа Тип
с настройками Настройки
и кодировкой Кодировка
. Можно читать объекты любого типа, объявленного в коде (структура, перечисление), и некоторых встроенных типов:
- Коллекция:
- Соответствие,
- Строка,
- Число,
- Булево,
- Момент,
- ДатаВремя,
- Дата,
- Время,
- Длительность,
- Ууид,
- Версия,
- Перечисление,
- Байты.
Если значение типов объекта не указано, тогда чтение выполняется в Соответствие.
Сопоставление типов происходит точно так же, как описано в методе ПрочитатьОбъект.
Исключения
ИсключениеЧтенияJson - если при чтении произойдет неоднозначность чтения (неявное чтение). Например, при чтении значения "2000-01-01"
в типы Дата, ДатаВремя нельзя однозначно определить какой тип должен быть прочитан.
ПрочитатьОбъект
ПрочитатьОбъект<ТипОбъекта>(
Источник: ПотокЧтения|Строка,
Тип: Тип<ТипОбъекта>,
Настройки: НастройкиЧтенияОбъектовJson,
Кодировка: Кодировка|Строка = Кодировка.Utf8
): ТипОбъекта
Перегрузка: ПрочитатьОбъект(Источник: ПотокЧтения|Строка, Тип: Коллекция<Тип>, Настройки: НастройкиЧтенияОбъектов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, Имя=Петр, Отчество=Петрович, Фамилия=Петров} }
ПрочитатьСоответствие
ПрочитатьСоответствие(
Источник: ПотокЧтения|Строка,
Кодировка: Кодировка|Строка = Кодировка.Utf8
): Соответствие<Строка, Объект?>
Читает соответствие из Источник
. Вызывает метод ПрочитатьОбъект с параметром Тип = Тип<Соответствие<Строка, Объект?») и кодировкой Кодировка
.
Примеры
Исходный JSON:
{
"Имя": [
{
"Имя1": "Значение1"
},
{
"Имя2": "Значение2"
}
]
}
метод ПрочитатьСоответствиеИзСтрокиJson(СтрокаJson: Строка): Строка
знч Результат = СериализацияJson.ПрочитатьСоответствие(СтрокаJson)
возврат Результат.ВСтроку()
;
Результат:
{Имя: [{Имя1: Значение1}, {Имя2: Значение2}]}