Запросы к JSON
|
Этот раздел перенесён из документации Camunda 7 и в дальнейшем будет доработан с учётом особенностей OpenBPM Engine |
Формат данных JSON поддерживает запросы с использованием языка запросов JSONPath.
Получение элемента
import static io.openbpm.spin.Spin.JSON;
String json = "{\"child\": [{\"id\": 1,\"name\": \"Lucy\",\"sex\": \"female\"},{\"id\": 2,\"name\": \"Tracy\",\"sex\": \"female\"}],\"number\": 1,\"boolean\": true}";
SpinJsonNode child = JSON(json).jsonPath("$.child[0]").element();
Получение списка элементов
import static io.openbpm.spin.Spin.JSON;
String json = "{\"child\": [{\"id\": 1,\"name\": \"Lucy\",\"sex\": \"female\"},{\"id\": 2,\"name\": \"Tracy\",\"sex\": \"female\"}],\"number\": 1,\"boolean\": true}";
SpinList<SpinJsonNode> childs = JSON(json).jsonPath("$.child").elementList();
Получение строкового значения
import static io.openbpm.spin.Spin.JSON;
String json = "{\"child\": [{\"id\": 1,\"name\": \"Lucy\",\"sex\": \"female\"},{\"id\": 2,\"name\": \"Tracy\",\"sex\": \"female\"}],\"number\": 1,\"boolean\": true}";
String value = JSON(json).jsonPath("$.child[0].name").stringValue();
Получение числового значения
import static io.openbpm.spin.Spin.JSON;
String json = "{\"child\": [{\"id\": 1,\"name\": \"Lucy\",\"sex\": \"female\"},{\"id\": 2,\"name\": \"Tracy\",\"sex\": \"female\"}],\"number\": 1,\"boolean\": true}";
Double count = JSON(json).jsonPath("$.number").numberValue();
Получение булевого значения
import static io.openbpm.spin.Spin.JSON;
String json = "{\"child\": [{\"id\": 1,\"name\": \"Lucy\",\"sex\": \"female\"},{\"id\": 2,\"name\": \"Tracy\",\"sex\": \"female\"}],\"number\": 1,\"boolean\": true}";
Boolean exists = JSON(json).jsonPath("$.boolean").boolValue();
Фильтрация в запросе
Обратите внимание, что выражение фильтрации — выражение внутри () — не должно содержать двойных кавычек!
import static io.openbpm.spin.Spin.JSON;
String json = "{\"child\": [{\"id\": 1,\"name\": \"Lucy\",\"sex\": \"female\"},{\"id\": 2,\"name\": \"Tracy\",\"sex\": \"female\"}],\"number\": 1,\"boolean\": true}";
SpinList<SpinJsonNode> girls = JSON(json).jsonPath("$.child[?(@.sex == 'female')]").elementList();
Лицензия и атрибуция
Эта документация была создана на базе материала "Camunda 7 Docs" от Camunda, находится под лицензией Creative Commons Attribution-ShareAlike 3.0 Unported License .
Оригинал документации: https://docs.camunda.org