Как извлечь значения из массива Json в балерине 0,982,0 - PullRequest
0 голосов
/ 12 января 2019

Я получаю результат запроса из базы данных как [{"id":}]. Когда я пытаюсь зафиксировать это значение 'id' следующим образом, оно возвращает ноль.

var getClientIdResult=eaDBEndpoint->select(QUERY_GET_CLIENT_ID,(),accountId);
match getClientIdResult {
    table queryResult => {
        match <json>queryResult{
            json jsonResult => {
                clientId=check<int> jsonResult["id"];

            } error e => return e;
        }
    } error e => return e;
}

Я полагаю, что это связано с тем, что результат JSON представлен в виде массива JSON, а код не захватывает значение 'id' внутри объекта JSON.

Любые предложения относительно того, как получить значение id, будут полезны.

1 Ответ

0 голосов
/ 12 января 2019

Поскольку это массив JSON, вам нужно получить к нему доступ с помощью индекса, а затем вы можете выбрать элемент выбранного JSON с помощью ключа.

Пример : выберите начальный JSON массива JSON и получите id его. jsonResult[0].id

var getClientIdResult = eaDBEndpoint->select(QUERY_GET_CLIENT_ID,(),accountId);
match getClientIdResult {
    table queryResult => {
        match <json>queryResult {
            json jsonResult => {
                clientId = check <int>jsonResult[0].id;
            }
            error e => return e;
        }
    }
    error e => return e;
}

Поскольку он возвращает ошибку, если она произошла, вы можете просто использовать check следующим образом:

var getClientIdResult = eaDBEndpoint->select(QUERY_GET_CLIENT_ID,(),accountId);
table queryResult = check <table>getClientIdResult;
json jsonResult = check <json>queryResult;
clientId = check <int>jsonResult[0].id;

Пожалуйста, обратитесь к [1] ​​за дополнительными примерами использования массивов JSON.

[1] https://ballerina.io/learn/by-example/json-arrays.html

...