Раскодировать 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, время: 10:10. |