JSONオブジェクトの配列はHTML5 localStorage
に保存されます。
当面の区切り文字は_;
_です。
使用されているlocalStorage
、split(';')
およびjoin(';')
操作からオブジェクトの配列にアクセスして変更するため。
ただし、区切り文字のアプローチは不安定に見えます。
例_;
_はオブジェクト属性内で満たすことができ、split(';')
操作は正しくありません。
区切り文字として_;;
_を使用できますが、安定していることもわかりません。
localStorage
がlocalStorage
として保存されている限り、オブジェクトの配列として表示されるString
を処理する堅牢な方法はありますか?
[〜#〜]編集[〜#〜]
ストッパーの1つは、オブジェクトの配列をクラシックとしてlocalStorageに保存できなかったことです:_"[{},{}]"
_localStorage
は、_"{},{}"
_のような文字列に自動的に変換します
localStorage
内の私の現在のデータ:
_"{"name":"volvo","id":"033"};{"name":"saab","id":"034"}"
_
仮定
おそらく、最初に_[
_を追加し、最後に_]
_を追加することができますが、正常に見えません
オブジェクトをJSON文字列に変換するだけです。
_localStorage.setItem("savedData", JSON.stringify(objects));
_
およびその逆:
_objects = JSON.parse(localStorage.getItem("savedData")));
_
または、同じlocalStorage値に複数のオブジェクトを追加できます。
_localStorage.setItem("savedData", JSON.stringify([object1, object2 /*, etc*/]));
object1 = JSON.parse(localStorage.getItem("savedData"))[0];
object2 = JSON.parse(localStorage.getItem("savedData"))[1];
_
次のようにsavedData
にアクセスすることもできます:
_localStorage.savedData = "Hello world"
var foo = localStorage.savedData;
_
これはデータの取得と設定の両方に使用できますが、getItem('name');
およびsetItem('name', 'value');
よりも「安全」とは言えません。
変数を読み取る:
var xyz = JSON.parse( localStorage.getItem( 'element' ) );
変数を保存する:
localStorage.setItem( 'element' , JSON.stringify(xyz));
ここで、element
はローカルストレージ変数の名前、xyz
はjs変数の名前です。
配列が大きすぎない場合は、解析と文字列化を使用できますが、大きすぎる場合は、小さな変更ごとにデータセット全体を再エンコードします。
http://rhaboo.org のライブラリは、リンクされたリスト内の各配列エントリに独自のlocalStorageエントリを与えることにより、ライブラリを改善しています。つまり、非常に効率的に変更を加えることができます。 JSONとは異なり、テキスト名のプロパティと3つの異なるタイプの疎エントリ(null、未定義、単純に存在しない)も尊重します。
ところで、私はラブーを書いた。