#javascript #json
#javascript #json
Вопрос:
(Прошу прощения, если был задан аналогичный вопрос, я не смог его найти)
В принципе, у меня есть объект JSON примерно с 10 свойствами (фиксированное количество), который содержит персональные настройки для приложения без пользовательской системы, и я хотел бы, чтобы пользователи могли получить код, который преобразует в этот объект с соответствующими значениями для каждого свойства. Таким образом, они смогут получить доступ к приложению со своими настройками, используя постоянную ссылку.
Вопрос в том, существует ли метод или конкретная указанная техника для преобразования сериализованных объектов JSON (т. Е. строки JSON) в числа или шестнадцатеричный код? Я видел, как несколько веб-сайтов делают аналогичную вещь с точки зрения пользователя.
Поскольку у меня есть конечный набор свойств и возможных значений, мой подход заключался бы в жестком кодировании строки (например, если свойство 1 имеет значение x, первый символ в строке равен 1, если оно имеет значение y, то это 2 и т.д. ), Но мне интересно, есть ли что-нибудь, что лучше всего подходит для такого рода вещей.
Ответ №1:
Давайте сделаем это.
setup
это объект, который я использовал для тестирования
var setup = { "abc" : "asdasd",
"special" : "my wife hates me",
"Kids" : 7564
};
функция для генерации ссылки:
function generateLinkWithSpecialSetup(setup) {
var str = JSON.stringify(setup);
var hash = "";
for(var i =0; i<str.length;i ) {
hash = str.charCodeAt(i).toString(16);
}
return "example.com/special-setup/#" hash;
}
функции для поиска настроек по хэшу:
function findSetupFromHash() {
var hash = window.location.hash.substring(1);
var str = hex2a(hash);
return JSON.parse(str);
}
function hex2a(hexx) {
var hex = hexx.toString(); //force conversion
var str = '';
for (var i = 0; i < hex.length; i = 2)
str = String.fromCharCode(parseInt(hex.substr(i, 2), 16));
return str;
}
Комментарии:
1. Работает просто очаровательно! И теперь я чувствую себя виноватым из-за того, что заставил вас писать код, который я мог бы написать сам… Спасибо!