Раскодировать BSON в JSON
Есть строка в формате BSON (закодированная в base64), как раскодировать ее в JSON-строку?
Строка в таком виде Код:
ugEAAAMwAGsAAAACX2lkAAsAAAAxNUdaczF4UWt3AAJVc2VyQnVpbGQAJQAAADRlMTI3VzEwN3M2N1MxYjc4ZjEwM1U5MHkzN3cxMDBlMTE5ZwAIVXNlckZ1bGxBY2Nlc3MAAQhVc2VyQ2FuQWRkAAAAAzEAagAAAAJfaWQACwAAADV2QlV2ZWdsVm4AAlVzZXJCdWlsZAAkAAAANzF6MTIySjEwM1Y2OFI4MmU4M2o4NWI5OHE2MG45Nms1MloACFVzZXJGdWxsQWNjZXNzAAAIVXNlckNhbkFkZAAAAAMyAGoAAAACX2lkAAsAAAAwWk81anpwb3MzAAhVc2VyRnVsbEFjY2VzcwABAlVzZXJCdWlsZAAkAAAAMTA3TTEyMEwxUDg4WjY3czczQTk0ZDcwRTk3ajEwMWsyNEUACFVzZXJDYW5BZGQAAAADMwBqAAAAAl9pZAALAAAAb0prbDhyZk9GbwACVXNlckJ1aWxkACQAAAAxMjNXODNkOTRpMTRPNjVMOTRFMTI1VTExM3Y2MXU1OFQ4VQAIVXNlckZ1bGxBY2Nlc3MAAQhVc2VyQ2FuQWRkAAAAAA==Код:
bson результат запроса, закодированный в base64(Вопрос подобен этому, тут все работает, но это для Delphi) Пробовал раскодировать base64 с помощью WindowBase64 функции atob() Результат такой (из-за непечатных символов пришлось картинкой): ![]() Код:
var str = ("ugEAAAMwAGsAAAACX2lkAAsAAAAxNUdaczF4UWt3AAJVc2VyQnVpbGQAJQAAADRlMTI3VzEwN3M2N1MxYjc4ZjEwM1U5MHkzN3cxMDBlMTE5ZwAIVXNlckZ1bGxBY2Nlc3MAAQhVc2VyQ2FuQWRkAAAAAzEAagAAAAJfaWQACwAAADV2QlV2ZWdsVm4AAlVzZXJCdWlsZAAkAAAANzF6MTIySjEwM1Y2OFI4MmU4M2o4NWI5OHE2MG45Nms1MloACFVzZXJGdWxsQWNjZXNzAAAIVXNlckNhbkFkZAAAAAMyAGoAAAACX2lkAAsAAAAwWk81anpwb3MzAAhVc2VyRnVsbEFjY2VzcwABAlVzZXJCdWlsZAAkAAAAMTA3TTEyMEwxUDg4WjY3czczQTk0ZDcwRTk3ajEwMWsyNEUACFVzZXJDYW5BZGQAAAADMwBqAAAAAl9pZAALAAAAb0prbDhyZk9GbwACVXNlckJ1aWxkACQAAAAxMjNXODNkOTRpMTRPNjVMOTRFMTI1VTExM3Y2MXU1OFQ4VQAIVXNlckZ1bGxBY2Nlc3MAAQhVc2VyQ2FuQWRkAAAAAA==");
console.log(atob(str));
Нужные параметры, типа _id или userBuild для составления JSON объекта тут есть Но все-же JSON из такой строки не спарсишь Что можно сделать? P.S. Строка - ответ на запрос к HTTP API Scorocode |
|
Alexandroppolus,
Это браузерный вариант? Можете пример привести, пожалуйста |
Похоже в строке изначально мусор иначе atob адекватно работал бы.
пробуй писать в саппорт или на форуме разработчика. |
Вот это помогло
Этот файл + функция
function myFunction(str) {
var BSON = bson().BSON;
// Decode Base64 into bytes
var rawBytes = window.atob(str);
// Typed Array (Uint8Array) for deserialize call
var uintArray = new Uint8Array(rawBytes.length);
// Fill Uint8Array from raw bytes
for (var i = 0; i < rawBytes.length; i++)
{
uintArray[i] = rawBytes.charCodeAt(i);
}
// Deserialize it
var doc_2 = BSON.deserialize(uintArray);
return JSON.stringify(doc_2, null, 4);
}
|
MallSerg,
Нет, тут все верно, решение нашел |
| Часовой пояс GMT +3, время: 15:35. |