JSON を使用したメソッドで JavaScript オブジェクトをシリアル化するにはどうすればよいですか?
質問
メソッドもシリアル化する JSON の拡張機能を探しています。オブジェクトのコレクションとして機能するオブジェクトがあり、コレクション オブジェクトのメソッドもシリアル化したいと考えています。これまでに私が見つけた 上品なJSON. 。何かご意見は?
解決
メソッドをシリアル化することが決して良いアイデアだとは思いません。コードをサーバーサイドで実行する場合は、攻撃にさらされることになります。クライアント側で実行したい場合は、ローカル メソッドのみを使用し、シリアル化されたオブジェクトで使用するメソッドの名前を参照することをお勧めします。
私はそれを信じていますが、 "f = "+function() {}
評価できる文字列バージョンが得られます。
var test = "f = " + function() { alert("Hello"); };
eval(test)
また、json を適切に処理するには、オブジェクトを json にシリアル化するための優れたメソッドを備えたプロトタイプをお勧めします。
他のヒント
JavaScript コードをシリアル化せずに回避するようにしてください。その先には苦しみの世界が広がっています。コードをデータベースからではなく静的ファイルからのみ取得できる場合、デバッグがはるかに簡単になります。代わりに、JSON 応答を受信した後にその応答を追跡し、適切なデータを適切なオブジェクト コンストラクターに渡します。
どうしてもシリアル化する必要がある場合は、関数で toString() を呼び出すとそのソースが返されます。
WCF フレームワークを使用して RESTful Web サービスを開発する場合、それは非常に簡単に実現できます。DataContract、DataMember 属性を使用して、必要なコレクションを含むデータ構造クラスを作成するだけです。
[DataContract]
public class Foo
{
[DataMember]
public string FooName {get;set;}
[DataMember]
public FooItem[] FooItems {get;set;}
}
[DataContract]
public class FooItem
{
[DataMember]
public string Name {get;set;}
}