wts: https://otus.ru/journal/schema-json-i-comments-chto-nuzhno-znat/ (в разделе "JSON Schema") или даже лучше: https://habr.com/ru/post/495766/.
Где может потребоваться: в тех ситуациях, когда нет уверенности, что придет JSON с тем составом и форматом полей или коллекций, который ожидается. Например, когда информация получается от неопределенного круга источников или когда нет уверенности в источнике.
Короче, согласно https://json-schema.org/, benefits такие:
1.Describes your existing data format(s).
2. Provides clear human- and machine- readable documentation.
3. Validates data which is useful for:
3.1 Automated testing.
3.2 Ensuring quality of client submitted data.
Пример использования.
&НаКлиенте
Процедура JVD_validate(Команда)
УстановитьВнешнююКомпоненту("ОбщийМакет.C1ExternTools");
Рез = ПодключитьВнешнююКомпоненту("ОбщийМакет.C1ExternTools", "test", ТипВнешнейКомпоненты.Native);
ВК = Новый("AddIn.test.ExternToolsDRV");
Схема = "{
|""$id"": ""tsdGoodsPosting"",
|""description"": ""Данные о товаре, поступившем на точку в рамках маршрутного листа"",
|""type"": ""object"",
|""properties"": {
| ""ДатаДок"": {
| ""type"": ""string"",
| ""pattern"": ""^20\\d{6}$""
| },
| ""НомерДок"": {
| ""type"": ""string""
| },
| ""Товары"": {
| ""type"": ""array"",
| ""items"": {
| ""$ref"": ""#/definitions/good""
| }
| }
|},
|""definitions"": {
| ""good"": {
| ""type"": ""object"",
| ""required"": [
| ""Товар_КодНСИ"",
| ""ЕИ""
| ],
| ""properties"": {
| ""Товар_КодНСИ"": {
| ""type"": ""string"",
| ""description"": """"
| },
| ""ЕИ"": {
| ""type"": ""string"",
| ""description"": """"
| }
| }
| }
|}
|}";
ДанныеОк = "
|{
|""ДатаДок"": ""20221125"",
|""НомерДок"": ""005-00001315"",
|""Товары"": [
| {
| ""Товар_КодНСИ"": ""90000013"",
| ""ЕИ"": """"
| },
| {
| ""Товар_КодНСИ"": ""90012291"",
| ""ЕИ"": """"
| }
|]
|}";
стрДжей = ВК.JVD_Проверить(Схема, ДанныеОк);
стк = JSON.РазобратьJSON(стрДжей);
ПоказатьПредупреждение(,стрДжей);
ДанныеНЕОк = "
|{
|""ДатаДок"": ""30221125"",
|""НомерДок"": ""005-00001315"",
|""Товары"": [
| {
| ""Товар_КодНСИ"": ""90000013"",
| ""ЕИ"": """"
| },
| {
| ""Товар_КодНСИ"": ""90012291""
| }
|]
|}";
стрДжей = ВК.JVD_Проверить(Схема, ДанныеНЕОк);
стк = JSON.РазобратьJSON(стрДжей);
ПоказатьПредупреждение(,стрДжей);
КонецПроцедуры
ОТВЕТЫ:
1. {"Data":"","Description":["OK"],"Status":true}
2. {"Data":"","Description":["Отсутствует обязательное поле 'ЕИ'. Объект: <root> --> [Товары] --> [1]","Провалена валидация значения на соответствие выражению RegEx. Объект: <root> --> [ДатаДок]"],"Status":false}
ИМХО технология - огонь. В среде 1с, она не слишком известна и востребована. Однако, быстрая валидация json по схемам очень будет полезной при обмене через rest+json.
P.S. Библиотеки jsoncpp и valijson переведены мной на русский язык в одно лицо, так-что прошу прощения, если где-то перевод не слишком точен.
P.P.S. ВК для Android здесь: //infostart.ru/public/1544296/
Тестировалось на платформе: 8.3.20.1674