2016-12-10 2 views
1

저는 jquery mobile에서 새롭게 활약 중입니다. 학교 지정을위한 쇼핑 목록 신청을하고 있는데 로컬 저장소에 개체를 저장해야합니다.JQuery Mobile JSON 문자열 화

각 항목에는 다음 정보가 포함되어야합니다. 항목 이름, 항목 수량 및 부울 is_bought. 모든 항목 데이터를 하나의 JSON 문자열에 저장하려고합니다. 항목 데이터는 다른 페이지의 사용자가 입력합니다.

내 문제는 입니다. 1) JSON을 통해 로컬 스토리지에 항목을 저장하는 방법 stringify.

2) 항목 데이터를 JSON 문자열에서 검색하여 목록으로 표시하는 방법.

+0

http://stackoverflow.com/questions/2010892/storing-objects-in-html5-localstorage – Viney

답변

2

먼저 : 나는 당신이 바로 당신 같은 객체 (JSON) 구조가 이해하는 경우 :

{ 
    "name": "cheese", 
    "quantity": 2, 
    "is_bought": false 
} 

그렇지 않으면 당신의 구조 해야 (질문에 당신은 당신의 변수에 대한 키 (이름)이 없다) 내가 개체의 각 변수에 액세스 할 수 있도록 보여준 것과 같아야합니다.

두 번째 : 약 localStorage입니다. 문자열 키/값 쌍만 처리하도록 제한되어 있으므로 개체를 저장할 수 없습니다. JSON.stringify()을 사용하여 개체를 문자열로 구문 분석하고 localStorage에 저장 한 다음 검색 후 JSON.parse()을 사용하여 구문 분석합니다. 코드는 다음과 같을 수 있습니다 :

var item = {"name": "cheese", "quantity": 2, "is_bought": true}; 

// Store item into localStorage 
localStorage.setItem('item', JSON.stringify(item)); 
// Retrieve item from localStorage 
var retrievedItem = localStorage.getItem('item'); 
var parsedItem = JSON.parse(retrievedItem); 

편집 : 여러 항목를 저장하기 위해 당신의 질문을 여러 항목을 저장하고 구별에 대해, 그리고 경우

그래서, 당신의 품목의 이름이고유 한 경우 당신이 구입 한 아이템을 알고 있다면 아이템 이름의 키를 사용하여 localStorage에 저장할 수 있습니다.

// You can do this in a for loop 
localStorage.setItem('item_' + item.name, JSON.stringify(item)); 

// And to change (if you already know bought item's name), 'cheese' for example 
var retrievedItem = localStorage.getItem('item_cheese'); 
var parsedItem = JSON.parse(retrievedItem); 
parsedItem.is_bought = true; 
// And save again in localStorage 
localStorage.setItem('item_cheese', JSON.stringify(parsedItem)); 
+0

하나 개의 항목보다가 있다면 당신의 코드를 어떻게됩니까? :) –

+0

아 ... 죄송합니다. 나는 질문을 오해했다. –

+0

당신의 피드백에 대해 대단히 고마워. 그러나 어떻게 항목 개체 목록에 데이터를 동적으로 입력 할 수 있습니까? – Stephen