2015-02-17 21 views
5

hey ở đó tôi đã thấy nhiều câu hỏi về chủ đề này nhưng không có câu nào phù hợp với câu hỏi của tôi. Tôi đang cố gắng sử dụng localStorage để lưu trữ tùy chọn người dùng tùy chỉnh, tôi thử đặt một đối tượng json vào khóa localStorage và sử dụng nó sau này. đối tượng lúc đầu trông như thế:Chuyển chuỗi thành đối tượng JSON hợp lệ

Object {test: "{a:"b",c:"d"}"} 

phương pháp JSON.parse trả về một lỗi, những gì tôi làm được điều đó:

var local_storage = getAll(); 
$.parseJSON(JSON.stringify(local_storage.test.substring(0,0).substring(0,local_storage.length,-1))); 

đầu ra là:

{a:"b",c:"d"} 

nhưng tôi không thể sử dụng nó như local_storage.test.a tại sao vậy và giải pháp cho điều đó là gì?

thx để được trợ giúp :)

Chỉnh sửa!

Nhờ @Oli Soproni B, giải pháp là:

var key = {a:"b",c:"d"}; 
var l = JSON.stringify(key); 
localStorage.setItem('test',l); 
var local_storage = $.parseJSON(localStorage.getItem('test')); 
console.log(local_storage); 
console.log(local_storage.a); 
+0

là những gì 'local_storage.test.substring (0,0) .substring (0, local_storage.length, -1) '? –

+0

tại sao bạn gọi stringify và parse –

Trả lời

3
// data 
    var k = {a:"b", c: "d"}; 
    // stringify json 
    var l = JSON.stringify(k); 
    // set item to local storage 
    localStorage.setItem('test', l); 

    // get item to local storage and parse data 
    var local_storage = $.parseJSON(localStorage.getItem('test')); 

    console.log(local_storage); 

    Object {a: "b", c: "d"} 

    console.log(local_storage.a); 

    prints b 

// or use 
var local_storage = JSON.parse(localStorage.getItem('test')); 
// in parsing the stringify json data 
+0

Vì bạn sử dụng 'JSON.stringify', hơn bạn cũng nên sử dụng' JSON.parse', không cần jQuery ở đây . jQuery sẽ trả về giống nhau: 'if (window.JSON && window.JSON.parse) {return window.JSON.parse (dữ liệu + "");} ' – skobaljic

+2

hoạt động như một phép thuật :) cổ vũ bạn đời! – benjah

+1

hoạt động như một phép thuật !! –

0

Bạn sử dụng Json.stringify, bởi vì bạn cần phải lưu trữ dữ liệu vào localStorage như chỉ là một chuỗi.

bạn cần phải parse rằng một lần nữa để JSON để sử dụng nó như là một đối tượng JSON,


nhưng không như thế này

JSON.stringify(local_storage.test.substring(0,0).substring(0,local_storage.length,-1)) 

này sẽ cố gắng để có được một chuỗi con từ của bạn được lưu trữ trước đây chuỗi, và một lần nữa cố gắng để stringify nó.


Bạn có thể lấy chuỗi được lưu trữ trực tiếp như thế này,

var local_storage = getAll(); 
var test=JSON.parse(local_storage.test); 

Và sau đó sử dụng, như là đối tượng kiểm tra, như test: {a:"b",c:"d"}

+1

tôi đã thử nhưng nó trả về lỗi cú pháp: Uncaught SyntaxError: Mã thông báo không mong muốn – benjah

1

cửa hàng LocalStorage chuỗi, không phản đối. Vì vậy, bạn cần phải chuyển đổi đối tượng thành chuỗi trong khi lưu trữ và chuyển đổi nó thành đối tượng trong khi truy xuất.

Để lưu trữ:

localStorage.setItem("key",JSON.stringify(obj)); 

Để lấy:

obj = JSON.parse(localStorage.getItem(obj)); 

See DEMO here.

Các vấn đề liên quan