私は、配列に格納された入れ子になったオブジェクトを含むニューラルネットワークライブラリを作成しています。これらのオブジェクトの状態をローカルストレージに保存する必要があります。私はJSON.stringifyを使用して最高レベルのネットワークオブジェクトを保存できるものに変換しようとしましたが、JSON.parse()
に戻ってもメソッドは含まれていません。あなたの助けを事前にローカルストレージにメソッドを含むJavaScriptオブジェクトを保存するにはどうすればよいですか?
感謝。
私は、配列に格納された入れ子になったオブジェクトを含むニューラルネットワークライブラリを作成しています。これらのオブジェクトの状態をローカルストレージに保存する必要があります。私はJSON.stringifyを使用して最高レベルのネットワークオブジェクトを保存できるものに変換しようとしましたが、JSON.parse()
に戻ってもメソッドは含まれていません。あなたの助けを事前にローカルストレージにメソッドを含むJavaScriptオブジェクトを保存するにはどうすればよいですか?
感謝。
すでにposting hereは、localStorageに関数を格納することを扱っています。 blexの返信をチェックしてください。
ほとんどの場合、JSONオブジェクト内で永続化機能(動作)を推奨しません。これはデータのみを運ぶことを目的としています。 関数を使ってオブジェクトをシリアライズしたい場合は、それらをオーバーライドする必要があります。以下のコードはそれを助けます。
これは、関数をシリアライズするのに役立ちます。
var json = function(obj){ return JSON.stringify(obj, function(key, value) {
if (typeof value === 'function') {
return value.toString();
} else {
return value;
}
})};
Iは、テスト対象のラマを作成し、JSON(ラマ)の出力は、から値を取り出すのlocalStorageに保存
"{\"myName\":\"Ramasamy Kasiviswanathan\",\"myfunction\":\"function(input){\\nconsole.log('input', input);\\n}\"}"
、
localStorage.setItem('ramaLocal',json(rama));
あろうLocalStorage、
ramadeserialize = eval("JSON.parse(localStorage.getItem('ramaLocal'))");
O/Pは次のようになります。
Object { myName: "Ramasamy Kasiviswanathan", myfunction: "function(input){\nconsole.log('input', input);\n}" }
あなたは、ローカルストレージ内の関数を格納することはできません。あなたは[あなたのオブジェクトを復活させる](https://stackoverflow.com/q/11810028/1048572)が必要になります。 – Bergi
@ Bergiの答えに追加するには、関数をlocalStorageに保存する必要はありません。あなたの関数がデータを焼き付けられるように書かれている場合、これらの関数を生成するものは、データが格納されたものであり、関数が独立しているように書き換えることができるはずです。 – Jake