В этой статье:
Для разработки базовой процедуры приведена таблица с базовыми скалярными типами 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_.
Для каждого ключа объекта может быть указан как один тип данных, так и несколько.
Допустимые типы данных:
String;
Integer;
Number;
Boolean;
null.
Пример ключей с одним типом данных:
[
{
"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 |
Если от источника данных приходят значения с несоответствующим типом данных, то вернётся ошибка.
Несколько типов данных могут быть указаны одновременно для одного ключа, если выполняется одно из условий:
одним из нескольких типов данных является String;
используется два типа данных - 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-процедура