В этой статье:

Поддерживаемые структуры

Поддерживаемые типы данных

Один тип данных

Несколько типов данных

Табличный JSON-сервис

Для разработки базовой процедуры приведена таблица с базовыми скалярными типами JSON Schema и соответствующими внутренними типами платформы:

Базовый скалярный тип JSON Schema

Внутренний тип платформы

number

double

string

text

boolean

bigint

Поддерживаемые структуры

В поле ресурса «JSON Schema» могут быть заданы объекты с подобной структурой или схемы, описывающие объекты:

{
    "id": 1,
    "name": "my_name",
    "text": "my_text"
}

Примечание. Данная структура передаётся на мобильный клиент в таблице с названием scalar_table_.

[
    {
        "id": 1,
        "name": "my_name1",
        "text": "my_text1"
    },
    {
        "id": 2,
        "name": "my_name2",
        "text": "my_text2"
    }
]

Примечание. При передаче данных без названия таблицы, на мобильный клиент данные будут передаваться с названием output_table.

{
    "My_Table":
    [
        {
            "id": 1,
            "name": "my_name1",
            "text": "my_text1"
        },
        {
            "id": 2,
            "name": "my_name2",
            "text": "my_text2"
        }
    ]
}

{
    "Table1":
    [
        {
            "id_table1": 1,
            "name_table1": "my_name1",
            "text_table1": "my_text1"
        },
        {
            "id_table1": 2,
            "name_table1": "my_name2",
            "text_table1": "my_text2"
        }
    ],
    "Table2":
    [
        {
            "id_table2": 1,
            "name_table2": "my_name1",
            "text_table2": "my_text1"
        },
        {
            "id_table2": 2,
            "name_table2": "my_name2",
            "text_table2": "my_text2"
        }
    ]
}

{
    "my_key": "qwerty",
    "new_id": 12,
    "My_Table":
    [
        {
            "id": 1,
            "name": "my_name1",
            "text": "my_text1"
        },
        {
            "id": 2,
            "name": "my_name2",
            "text": "my_text2"
        }
    ]
}

Примечание. Дополнительные ключи передаются на мобильный клиент в таблице с названием scalar_table_.

Поддерживаемые типы данных

Для каждого ключа объекта может быть указан как один тип данных, так и несколько.

Допустимые типы данных:

Один тип данных

Пример ключей с одним типом данных:

[
   {
       "id": 1,
       "name": "my_name1",
       "text": true,
       "order": null
   },
   {
       "id": 2,
       "name": "my_name2",
       "text": false,
       "order": null
   }
]

При конвертации JSON-объекта в JSON-схему в качестве типа данных для перечисленных ключей будет указан тип данных их значений:

Ключ Значение

Тип данных

id 1 Integer
2
name "my_name1" String
"my_name2"
text true Boolean
false
order null null

Если от источника данных приходят значения с несоответствующим типом данных, то вернётся ошибка.

Несколько типов данных

Несколько типов данных могут быть указаны одновременно для одного ключа, если выполняется одно из условий:

Пример ключей с несколькими типами данных:

[
   {
       "id": 1,
       "name": "my_name1",
       "text": true,
       "order": null,
       "count": 10
   },
   {
       "id": 2,
       "name": null,
       "text": false,
       "order": "order_245",
       "count": 10.25
   },
   {
       "id": 3,
       "name": null,
       "text": "false",
       "order": null,
       "count": 15
   }
]

При конвертации JSON-объекта в JSON-схему в качестве типа данных для перечисленных ключей будет указан тип данных их значений:

Ключ

Значение

Тип данных

Комментарии

id 1 Integer Для этого ключа могут быть указаны значения только с типом данных Integer.
2
3
name "my_name1" String, null Для этого ключа могут быть указаны значения только с типом данных String и null.
null
text true Boolean, String

Для этого ключа могут быть указаны значения только с типом данных String и Boolean.

Значения с типом данных Boolean будут преобразованы сервером мобильной платформы в String.

На мобильное устройство будут отправлены значения в формате "true"/"false".

false
"false"
order null String, null Для этого ключа могут быть указаны значения только с типом данных String и null.
"order_245"
count 10 Number

Для этого ключа могут быть указаны значения только с типом данных Integer и Number.

Значения с типом данных Integer будут преобразованы сервером мобильной платформы в Number.

10.25
15

Если в JSON-схеме указаны разные типы данных (один из которых String) для одного ключа, то все полученные от источника данных значения для этого ключа будут преобразованы в String, кроме значения null.

Если в JSON-схеме для ключа указан тип данных Number, а от источника возвращается Integer, то Integer будет преобразован в Number.

Если значение, полученное от источника данных, возвращается с типом данных, который не указан в JSON-схеме, то сервер мобильной платформы вернёт ошибку.

См. также:

Настройка интеграции с табличными источниками данных | Базовая CRUD-процедура