2

他の配列で構成されている配列を含むオブジェクトがあり、メソッドも含まれています。私が直面している問題は、多次元配列とメソッドのためにJSonを使用できないことです。

文字列に変換したい理由は、iPhoneのlocalStorageに保存するためです。

そこにテキストを保存することしかできず、ユーザーに関する複雑なオブジェクトを文字列として保存し、後で再び逆シリアル化できる方法を望んでいました。これを行う方法さえありますか?私は自分のAPIを書くのに十分なJavaScriptをよく知りません。それは私がこの時点で調べ始めたオプションでした:(

4

4 に答える 4

2

JSON にシリアル化します。複雑なオブジェクトと配列をシリアライズ/デシリアライズできます。

メソッド (コード) をシリアル化する方法はありません。

ローカル ストレージの永続性については、Lawnchairをお勧めします。

于 2012-05-23T13:03:20.173 に答える
0

通常、次を使用してメソッドをシリアル化することができますmyfunc.toString()

したがって、関数を使用してメソッドを認識し、それらを呼び出すと、何らかの方法で解析時にそれらを認識し、それらをファーストクラスの関数に戻すことができます。replacerJSON.stringify()JSON.parse().toString()

ただし、再構築された関数は元のオブジェクトのスコープ、つまりプライベート変数やメソッドなどにアクセスできないことに注意してください。

例えば

function A() {
    var foo = 'bar';
    this.test = function test() { console.log(foo) };
};

var b = new A();
var f = b.test.toString();  // the text of the method
b.test2 = new Function(f);

b.test2();
> undefined
于 2012-05-23T13:11:37.470 に答える
0

localStorage に格納する必要はありません。アプリケーションのどこでもグローバル配列を使用できます。これを一度試してください。

于 2012-05-23T13:09:55.243 に答える
0

さて、関数を持つオブジェクトを文字列と万力に変換する方法があります。このプラグインを見てください:

http://www.eslinstructor.net/jsonfn/

幸運を、

-ヴァディム

于 2012-08-28T08:03:02.033 に答える