Я пытаюсь использовать API (документации нет), серверная часть использует ScalaJS и uPickle (MsgPack) и возвращает необработанные двоичные данные для каждой конечной точки API.Мне нужно каким-то образом преобразовать эти необработанные двоичные данные в читаемый JSON.
Вот мой код:
function arrayBufferToString( buffer, encoding, callback ) {
var blob = new Blob([buffer],{type:'text/plain'});
var reader = new FileReader();
reader.onload = function(evt){callback(evt.target.result);};
reader.readAsText(blob, encoding);
}
fetch("https://example.com/example/fetchStats", {
"credentials": "include",
"headers": {
"accept": "*/*",
"accept-language": "en-US,en;q=0.9",
"content-type": "application/octet-stream"
},
"body":"\u0000",
"method":"POST",
"mode":"cors"
}).then(response => response.arrayBuffer().then(arrayBuffer => {
if (arrayBuffer) {
var bytes = new Uint8Array(arrayBuffer);
var u16 = new Uint16Array(bytes.length)
for(var i=0;i<bytes.length;i++){
u16[i] = bytes[i].toString().charCodeAt(0)
}
arrayBufferToString(u16, 'UTF-8', console.log.bind(console))
}
}));
Это возвращает следующую строку: "3011102010301" (с пробелами между числами) IЯ не уверен, как читать эти данные.Как я уже говорил выше, API использует это https://github.com/lihaoyi/upickle вместо JSON.
Кто-нибудь знает, как преобразовать необработанные двоичные данные в удобочитаемый для человека формат?
Примерчто вернул бы HTTP-запрос выше: ╚ ╔t╔ ╗ ╔ ╚ ╔
Я так потерян.