Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 09.03.2018, 19:19
Интересующийся
Отправить личное сообщение для grigandal Посмотреть профиль Найти все сообщения от grigandal
 
Регистрация: 18.02.2018
Сообщений: 26

Раскодировать BSON в JSON
Есть строка в формате BSON (закодированная в base64), как раскодировать ее в JSON-строку?

Строка в таком виде

Код:
ugEAAAMwAGsAAAACX2lkAAsAAAAxNUdaczF4UWt3AAJVc2VyQnVpbGQAJQAAADRlMTI3VzEwN3M2N1MxYjc4ZjEwM1U5MHkzN3cxMDBlMTE5ZwAIVXNlckZ1bGxBY2Nlc3MAAQhVc2VyQ2FuQWRkAAAAAzEAagAAAAJfaWQACwAAADV2QlV2ZWdsVm4AAlVzZXJCdWlsZAAkAAAANzF6MTIySjEwM1Y2OFI4MmU4M2o4NWI5OHE2MG45Nms1MloACFVzZXJGdWxsQWNjZXNzAAAIVXNlckNhbkFkZAAAAAMyAGoAAAACX2lkAAsAAAAwWk81anpwb3MzAAhVc2VyRnVsbEFjY2VzcwABAlVzZXJCdWlsZAAkAAAAMTA3TTEyMEwxUDg4WjY3czczQTk0ZDcwRTk3ajEwMWsyNEUACFVzZXJDYW5BZGQAAAADMwBqAAAAAl9pZAALAAAAb0prbDhyZk9GbwACVXNlckJ1aWxkACQAAAAxMjNXODNkOTRpMTRPNjVMOTRFMTI1VTExM3Y2MXU1OFQ4VQAIVXNlckZ1bGxBY2Nlc3MAAQhVc2VyQ2FuQWRkAAAAAA==
В документации сказано, что это:

Код:
bson результат запроса, закодированный в base64
Как это раскодировать в JSON?

(Вопрос подобен этому, тут все работает, но это для Delphi)

Пробовал раскодировать base64 с помощью WindowBase64 функции atob()

Результат такой (из-за непечатных символов пришлось картинкой):

Код:

var str = ("ugEAAAMwAGsAAAACX2lkAAsAAAAxNUdaczF4UWt3AAJVc2VyQnVpbGQAJQAAADRlMTI3VzEwN3M2N1MxYjc4ZjEwM1U5MHkzN3cxMDBlMTE5ZwAIVXNlckZ1bGxBY2Nlc3MAAQhVc2VyQ2FuQWRkAAAAAzEAagAAAAJfaWQACwAAADV2QlV2ZWdsVm4AAlVzZXJCdWlsZAAkAAAANzF6MTIySjEwM1Y2OFI4MmU4M2o4NWI5OHE2MG45Nms1MloACFVzZXJGdWxsQWNjZXNzAAAIVXNlckNhbkFkZAAAAAMyAGoAAAACX2lkAAsAAAAwWk81anpwb3MzAAhVc2VyRnVsbEFjY2VzcwABAlVzZXJCdWlsZAAkAAAAMTA3TTEyMEwxUDg4WjY3czczQTk0ZDcwRTk3ajEwMWsyNEUACFVzZXJDYW5BZGQAAAADMwBqAAAAAl9pZAALAAAAb0prbDhyZk9GbwACVXNlckJ1aWxkACQAAAAxMjNXODNkOTRpMTRPNjVMOTRFMTI1VTExM3Y2MXU1OFQ4VQAIVXNlckZ1bGxBY2Nlc3MAAQhVc2VyQ2FuQWRkAAAAAA==");

console.log(atob(str));



Нужные параметры, типа _id или userBuild для составления JSON объекта тут есть

Но все-же JSON из такой строки не спарсишь


Что можно сделать?

P.S. Строка - ответ на запрос к HTTP API Scorocode

Последний раз редактировалось grigandal, 09.03.2018 в 19:47.
Ответить с цитированием
  #2 (permalink)  
Старый 09.03.2018, 20:01
Аватар для Alexandroppolus
Профессор
Отправить личное сообщение для Alexandroppolus Посмотреть профиль Найти все сообщения от Alexandroppolus
 
Регистрация: 25.10.2016
Сообщений: 1,012

https://github.com/mongodb/js-bson
Ответить с цитированием
  #3 (permalink)  
Старый 09.03.2018, 20:07
Интересующийся
Отправить личное сообщение для grigandal Посмотреть профиль Найти все сообщения от grigandal
 
Регистрация: 18.02.2018
Сообщений: 26

Alexandroppolus,
Это браузерный вариант?
Можете пример привести, пожалуйста
Ответить с цитированием
  #4 (permalink)  
Старый 09.03.2018, 21:08
Аватар для MallSerg
Профессор
Отправить личное сообщение для MallSerg Посмотреть профиль Найти все сообщения от MallSerg
 
Регистрация: 07.03.2011
Сообщений: 1,138

Похоже в строке изначально мусор иначе atob адекватно работал бы.
пробуй писать в саппорт или на форуме разработчика.
Ответить с цитированием
  #5 (permalink)  
Старый 09.03.2018, 21:18
Интересующийся
Отправить личное сообщение для grigandal Посмотреть профиль Найти все сообщения от grigandal
 
Регистрация: 18.02.2018
Сообщений: 26

Вот это помогло

Этот файл + функция
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);
  }

Последний раз редактировалось grigandal, 09.03.2018 в 21:34.
Ответить с цитированием
  #6 (permalink)  
Старый 09.03.2018, 21:44
Интересующийся
Отправить личное сообщение для grigandal Посмотреть профиль Найти все сообщения от grigandal
 
Регистрация: 18.02.2018
Сообщений: 26

MallSerg,
Нет, тут все верно, решение нашел
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сериализация форм в json Dtri jQuery 17 07.02.2017 11:42
собрать из json Html Валерий1996 AJAX и COMET 1 15.06.2015 08:41
Не могу распарсить JSON. gorenie jQuery 3 29.11.2013 22:26
JSON или JSONP для запросов на другой сервер? Метод GET, для длинных сообщений? Kotakota jQuery 5 23.08.2011 23:12
jQuery. Обработка ошибок и JSON. mma_mma jQuery 3 19.07.2010 12:10