Как декодировать массив байтов из ответа view-функции NEAR
Успешный вызов view-функции может выглядеть в JSON как список чисел. Это байты результата, а способ дальнейшего декодирования задаёт интерфейс контракта.
Закодируйте аргументы по интерфейсу контракта
Для JSON-метода с пустым объектом аргументов байты UTF-8 строки {} дают e30= в base64. Отправьте запрос в testnet с демонстрационным контрактом либо подставьте свой аккаунт и метод.
{
"jsonrpc": "2.0",
"id": 1,
"method": "query",
"params": {
"request_type": "call_function",
"finality": "final",
"account_id": "contract.rpc-examples.testnet",
"method_name": "get_greeting",
"args_base64": "e30="
}
}
Сначала получите байты, затем разберите результат
При result.result, равном [34,111,107,34], из UTF-8 получится JSON-строка "ok" вместе с кавычками. Для метода с JSON-результатом в JavaScript подойдёт JSON.parse(new TextDecoder().decode(Uint8Array.from(response.result.result))). Журнал вызова хранится отдельным полем.
При двоичном результате передайте байты декодеру указанного формата. Пустой массив обработайте отдельно до попытки разобрать JSON.