2013-10-03 4 views
0

Мне нужно сохранить в файле cookie небольшое количество данных.Сериализация javascript - короткая библиотека

Было бы замечательно, если бы javascript (изначально) обеспечил способ сериализации/десериализации массива (или объекта).

Чтобы быть честным, я попытался написать свой собственный фрагмент кода, он основан на идее о том, что мы можем сериализовать массив, рекурсивно преобразовывая его в querystring ключа/значения и наоборот.

Ну, это код:

var lib = { 
    serialize : function(_a) { 
     var s = '', enc = encodeURIComponent; 
     for (var k in _a) { 
      if (s) s += '&'; 
      s += enc(k) + '=' + ((typeof _a[k] == 'object') ? '?'+enc(lib.serialize(_a[k])) : enc(_a[k])); 
     } 
     return s; 
    }, 
    deserialize : function(_s) { 
     var a = [], dec = decodeURIComponent; 
     var list = _s.split('&'); 
     for (var c in list) { 
      var kv = list[c].split('='); 
      var v = kv[1].split('?'); 
      kv[1] = (v.length > 1) ? lib.deserialize(dec(v[1])) : dec(kv[1]); 
      a[dec(kv[0])] = kv[1]; 
     } 
     return a; 
    } 
}; 

http://jsfiddle.net/P7wT8/

Хотя это, кажется, работает довольно хорошо, кто-то может предложить мне что-то лучше и короче? Часть кода или библиотеки, что-то малое и простое в реализации Javascript-массива Сериализация/десериализация?

+0

Вы платите за каждое нажатие клавиши? Все это сокращение невозможно прочитать. – Halcyon

ответ

2

Я думаю, что ваш лучший подход к use JSON.

JSON.stringify и JSON.parse могут кодировать и декодировать значения. JSON является стандартным форматом в наши дни, поэтому другим разработчикам становится понятнее, что происходит.

Единственное ограничение состоит в том, что IE 7 и ниже не поддерживают функции JSON изначально и требуют наличия библиотеки.

+0

Спасибо за ваше предложение, но мне нужно что-то малое и портативное. – freedev

+0

Спасибо, я вижу, что в предложенной вами ссылке есть действительно короткая и портативная реализация формата JSON, на случай, если она не доступна. Возможно, это то, что я искал. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/JSON?redirectlocale=en-US&redirectslug=JavaScript%2FReference%2FGlobal_Objects%2FJSON#Browser_compatibility – freedev

Смежные вопросы