0

JavaScriptオブジェクトをjsonにシリアル化して、後で元の形式に逆シリアル化しようとしています。

難しいのは、シリアル化する必要があるのはプリミティブだけではないということです。例えば:

function Foo() {
    this.bar = "Hello World";
}

Foo.prototype.baz = function() {
    alert(this.bar);
}

var qux = new Foo();

シリアル化するにはどうすればよいquxですか?単純JSON.stringifyにそれJSON.parseなら、電話をかけることはできませんqux.baz()

これを行うための標準、ツール、または技術はありますか?私を正しい方向に向けるためのヒントはありますか?

ありがとう。

4

2 に答える 2

3

JSONへのJavaScriptオブジェクト

残念ながら、JSON仕様では関数のシリアル化が許可されていないため、オブジェクト全体をJSONにシリアル化することはできません。

ただし、独自のシリアル化標準を作成することはできます。他の言語では通常「フリーズ」と呼ばれるため、これはJavascript Frozen Object(JSFO)と呼ぶことができます。または、JSONに似た名前が必要な場合は、Javascript Frozen(またはFull?)Object Notation(JSFON)と呼ぶことができます。

実装はかなり簡単です。JSONコードは、jQueryやYUIなどのJSONコードを実装する任意のライブラリからコピーできます。または、 json.orgから任意のリファレンス実装をダウンロードし、関数を文字列化するように変更することもできます。

関数を文字列化するには、基本的に次のようなことを行う必要があります。

if (typeof obj == 'function') {
    return '"' + key + '":' + obj.toString();
}

そのようなものをJSON文字列化ライブラリのいずれかに接続します。

ただし、JSONは公開された仕様を持つ非常に特殊なデータ形式であるため、JSONとは呼ばないでください。

于 2012-11-30T02:53:28.587 に答える
0

MDNに関するJSONドキュメント、具体的にはJSON.stringifyを見始めます。

于 2012-11-29T21:07:04.357 に答える