2017-12-12 14 views
-2

私は、配列に格納された入れ子になったオブジェクトを含むニューラルネットワークライブラリを作成しています。これらのオブジェクトの状態をローカルストレージに保存する必要があります。私はJSON.stringifyを使用して最高レベルのネットワークオブジェクトを保存できるものに変換しようとしましたが、JSON.parse()に戻ってもメソッドは含まれていません。あなたの助けを事前にローカルストレージにメソッドを含むJavaScriptオブジェクトを保存するにはどうすればよいですか?

The code can be found here.

感謝。

+2

あなたは、ローカルストレージ内の関数を格納することはできません。あなたは[あなたのオブジェクトを復活させる](https://stackoverflow.com/q/11810028/1048572)が必要になります。 – Bergi

+0

@ Bergiの答えに追加するには、関数をlocalStorageに保存する必要はありません。あなたの関数がデータを焼き付けられるように書かれている場合、これらの関数を生成するものは、データが格納されたものであり、関数が独立しているように書き換えることができるはずです。 – Jake

答えて

0

すでにposting hereは、localStorageに関数を格納することを扱っています。 blexの返信をチェックしてください。

0

ほとんどの場合、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}" } 

参考: json.stringify does not process object methods

関連する問題