Amber (オンライン IDE ) で OrderedCollection を Web ブラウザーの localStorage に保存し、後で取得したいと考えています。
テスト データ オブジェクトの作成
| coll hcoll |
coll := OrderedCollection new.
coll add: 'abc'.
coll add: 'xon'.
hcoll := HashedCollection new.
hcoll at: 'en' put: 'English'.
hcoll at: 'fr' put: 'French'.
hcoll at: 'ge' put: 'German'.
coll add: hcoll.
テスト データ オブジェクトを localStorage に保存する
localStorage は、ブラウザーのキーと値のストアです。値は文字列でなければなりません。
localStorage setItem: 'coll' value: coll asJSONString.
"We set coll to nil to indicate that we
are going to retrieve it back from the localStorage"
coll := nil.
保存された値を取り戻す
以下のprintIt
localStorage getItem: 'coll'
与える
'["abc","xon",{"en":"English","fr":"French","ge":"German"}]'
これは JSON 文字列です。
OrderedCollection collを取得するにはどうすればよい ですか?
ブラウザーに組み込まれている JSON パーサーを使用する
JSON parse: (localStorage getItem: 'coll')
プリントの結果は
an Array ('abc' 'xon' [object Object])
と
(JSON parse: (localStorage getItem: 'coll')) class
は
Array
配列の 3 番目の要素
((JSON parse: (localStorage getItem: 'coll')) at: 3) class
です
JSObjectProxy
質問
任意の JSON オブジェクト (JavaScript 配列とオブジェクト、OrderedCollection と HashedCollection、Smalltalk の辞書を含む) の Smalltalk 表現を取得するにはどうすればよいですか?
ノート
JSON は、次の 2 つの構造で構築されています。
- 名前と値のペアのコレクション。さまざまな言語で、これはオブジェクト、辞書、ハッシュ テーブル、または連想配列として実現されます。
- 値の順序付きリスト。多くの言語では、これは配列、リスト、またはシーケンスとして実現されます。