Преобразование объекта JSON в числовую строку и наоборот

#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. Работает просто очаровательно! И теперь я чувствую себя виноватым из-за того, что заставил вас писать код, который я мог бы написать сам… Спасибо!