Ответ 1
Поскольку функция localStorage, по-видимому, ограничена обработкой только пар строк/значений, что вы можете сделать, это использовать lz-string library для подкрепления json object и сжать его перед сохранением в localStorage
Использование
// sample json object
var jsonobj = {'sample': 'This is supposed to be ling string', 'score': 'another long string which is going to be compressed'}
// compress string before storing in localStorage
localStorage.setItem('mystring', LZString.compress(JSON.stringify(jsonobj)));
// decompress localStorage item stored
var string = LZString.decompress(localStorage.getItem('mystring'))
// parse it to JSON object
JSON.parse(string);
Проверьте jsfiddle http://jsfiddle.net/raunakkathuria/7PQtC/1/, так как я скопировал полный script, так что ищите исполняемый код в конце скрипта