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

СериализацияJson

Стд::Json::СериализацияJson Тип-одиночка

Методы для чтения и записи объектов JSON целиком.

Сравнение

Ссылочное

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

Базовые типы: Объект, Одиночка


Методы

ЗаписатьОбъект

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

Сопоставление типов происходит точно так же, как описано в методе ПрочитатьОбъект.

Перегрузка
ЗаписатьОбъект(Приемник: ПотокЗаписи|ЗаписьJson, Значение: Объект?, Настройки: НастройкиЗаписиОбъектовJson)

Примеры

структура КлиентыСтруктура
обз пер Клиенты: Множество<КлиентСтруктура>
;

структура КлиентСтруктура
обз пер Ид: Число
обз пер Имя: Строка
обз пер Отчество: Строка
обз пер Фамилия: Строка
;

метод ЗаписатьОбъектВСтрокуJson(): Строка
знч КлиентыОбъект = новый КлиентыСтруктура(новый Множество<КлиентСтруктура>())
КлиентыОбъект.Клиенты.Добавить(новый КлиентСтруктура(1, "Иван", "Иванович", "Иванов"))
КлиентыОбъект.Клиенты.Добавить(новый КлиентСтруктура(2, "Петр", "Петрович", "Петров"))

знч Результат = СериализацияJson.ЗаписатьОбъект(КлиентыОбъект)

возврат Результат
;

Результат:

{
"Клиенты" : [
{
"Ид" : 1,
"Имя" : "Иван",
"Отчество" : "Иванович",
"Фамилия" : "Иванов"
},
{
"Ид" : 2,
"Имя" : "Петр",
"Отчество" : "Петрович",
"Фамилия" : "Петров"
}
]
}

ЗаписатьОбъект

Версия 8.0 и выше

ЗаписатьОбъект(
Приемник: ПотокЗаписи|ЗаписьJson,
Значение: Объект?,
Настройки: НастройкиЗаписиОбъектовJson)
Записывает объект Значение в 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,
"Имя" : "Петр",
"Отчество" : "Петрович",
"Фамилия" : "Петров"
}
]
}

ЗаписатьОбъект

Версия 7.0 и ниже

ЗаписатьОбъект(
Поток: ПотокЗаписи|ЗаписьJson,
Значение: Объект?,
Настройки: НастройкиЗаписиОбъектовJson)
Метод заменен на ЗаписатьОбъект.


ПрочитатьМассив

@Устарело
ПрочитатьМассив(
Источник: ПотокЧтения|Строка,
Кодировка: Кодировка|Строка = Кодировка.Utf8
): Массив<Объект?>
Читает массив объектов из Источник. Вызывает метод ПрочитатьОбъект с параметром Тип = Тип<Массив<Объект?>>) и кодировкой Кодировка.

Примеры

Исходный JSON:

[
{
"Имя1": "Значение1"
},
{
"Имя2": "Значение2"
}
]
метод ПрочитатьМассивИзСтрокиJson(СтрокаJson: Строка): Строка
знч Результат = СериализацияJson.ПрочитатьМассив(СтрокаJson)

возврат Результат.ВСтроку()
;

Результат:

[{Имя1: Значение1}, {Имя2: Значение2}]

ПрочитатьОбъект

@Устарело
ПрочитатьОбъект(
Источник: ПотокЧтения|Строка,
Тип: Коллекция<Тип>,
Настройки: НастройкиЧтенияОбъектовJson,
Кодировка: Кодировка|Строка = Кодировка.Utf8
): Объект?
Считывает объект JSON из Источник в объект типа Тип с настройками Настройки и кодировкой Кодировка. Можно читать объекты любого типа, объявленного в коде (структура, перечисление), и некоторых встроенных типов:

Если значение типов объекта не указано, тогда чтение выполняется в Соответствие.

Сопоставление типов происходит точно так же, как описано в методе ПрочитатьОбъект.

Исключения

ИсключениеЧтенияJson - если при чтении произойдет неоднозначность чтения (неявное чтение). Например, при чтении значения "2000-01-01" в типы Дата, ДатаВремя нельзя однозначно определить какой тип должен быть прочитан.

Перегрузка
ПрочитатьОбъект<ТипОбъекта>(Источник: ПотокЧтения|ЧтениеJson|Строка, Тип: Тип<ТипОбъекта>, Настройки: НастройкиЧтенияОбъектовJson, Кодировка: Кодировка|Строка = Кодировка.Utf8): ТипОбъекта


ПрочитатьОбъект

ПрочитатьОбъект<ТипОбъекта>(
Источник: ПотокЧтения|ЧтениеJson|Строка,
Тип: Тип<ТипОбъекта>,
Настройки: НастройкиЧтенияОбъектовJson,
Кодировка: Кодировка|Строка = Кодировка.Utf8
): ТипОбъекта
ТипОбъекта: Тип считываемого объекта.

Считывает объект JSON из Источник в объект типа <ТипОбъекта> с настройками Настройки и кодировкой Кодировка (если чтение происходит из потока). Можно читать объекты любого типа, объявленного в коде (структура, перечисление), и некоторых встроенных типов:

Если значение типа объекта не указано, тогда чтение выполняется в Соответствие.

Сопоставление полей и свойств происходит следующим образом:

Имя свойства в структуре сопоставляется с именем свойства в исходном JSON.

Если необходимого поля структуры нет в читаемом тексте JSON, тогда значение поле устанавливается в Неопределено.

Исключения

ИсключениеЧтенияJson - если при чтении произойдет неоднозначность чтения (неявное чтение). Например, при чтении значения "2000-01-01" в типы Дата, ДатаВремя нельзя однозначно определить какой тип должен быть прочитан.

Перегрузка
ПрочитатьОбъект(Источник: ПотокЧтения|Строка, Тип: Коллекция<Тип>, Настройки: НастройкиЧтенияОбъектовJson, Кодировка: Кодировка|Строка = Кодировка.Utf8): Объект?

Примеры

Исходный JSON:

[
{
"Ид": 1,
"Имя": "Иван",
"Отчество": "Иванович",
"Фамилия": "Иванов"
},
{
"Ид": 2,
"Имя": "Петр",
"Отчество": "Петрович",
"Фамилия": "Петров"
}
]
структура КлиентСтруктура
обз пер Ид: Число
обз пер Имя: Строка
обз пер Отчество: Строка
обз пер Фамилия: Строка
;

метод ПрочитатьОбъектИзСтрокиJson(СтрокаJson: Строка): Строка
знч Результат = СериализацияJson.ПрочитатьОбъект(СтрокаJson, Тип<Множество<КлиентСтруктура>>)

возврат Результат.ВСтроку()
;

Результат:

{ {Ид=1, Имя=Иван, Отчество=Иванович, Фамилия=Иванов}, {Ид=2, Имя=Петр, Отчество=Петрович, Фамилия=Петров} }

Исходный JSON#2:

{
"ВремяФормирования": "2024-10-06T12:57:35",
"Клиенты": [
{
"Ид": 1,
"Имя": "Иван",
"Отчество": "Иванович",
"Фамилия": "Иванов"
},
{
"Ид": 2,
"Имя": "Петр",
"Отчество": "Петрович",
"Фамилия": "Петров"
}
]
}
структура КлиентСтруктура
обз пер Ид: Число
обз пер Имя: Строка
обз пер Отчество: Строка
обз пер Фамилия: Строка
;

метод ПрочитатьОбъектИзЧтениеJson(СтрокаJson: Строка): Строка
знч Чтение = новый ЧтениеJson(СтрокаJson)
Чтение.Следующий()
Чтение.Следующий()
Чтение.Следующий()
знч ВремяФормирования = Чтение.ПрочитатьСодержимоеКакДатаВремя() // ДатаВремя{2024-10-06T12:57:35}

Чтение.Следующий()
Чтение.Следующий()

знч Результат: Массив<КлиентСтруктура> = СериализацияJson.ПрочитатьОбъект(Чтение, Тип<Массив<КлиентСтруктура>>)

возврат Результат.ВСтроку()
;

Результат:

[ {Ид=1, Имя=Иван, Отчество=Иванович, Фамилия=Иванов}, {Ид=2, Имя=Петр, Отчество=Петрович, Фамилия=Петров} ]

ПрочитатьСоответствие

@Устарело
ПрочитатьСоответствие(
Источник: ПотокЧтения|Строка,
Кодировка: Кодировка|Строка = Кодировка.Utf8
): Соответствие<Строка, Объект?>
Читает соответствие из Источник. Вызывает метод ПрочитатьОбъект с параметром Тип = Тип<Соответствие<Строка, Объект?>>) и кодировкой Кодировка.

Примеры

Исходный JSON:

{
"Имя": [
{
"Имя1": "Значение1"
},
{
"Имя2": "Значение2"
}
]
}
метод ПрочитатьСоответствиеИзСтрокиJson(СтрокаJson: Строка): Строка
знч Результат = СериализацияJson.ПрочитатьСоответствие(СтрокаJson)

возврат Результат.ВСтроку()
;

Результат:

{Имя: [{Имя1: Значение1}, {Имя2: Значение2}]}

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

Объект

ВСтроку

ПолучитьТип

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