Как декодировать массив байтов из ответа 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.

Источники