メソッドもシリアル化する JSON の機能強化を探しています。オブジェクトのコレクションとして機能するオブジェクトがあり、コレクション オブジェクトのメソッドもシリアル化したいと考えています。これまでのところ、 ClassyJSONを見つけました。何かご意見は?
3 に答える
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;}
}
メソッドをシリアル化することは決して良い考えではないと思います。コードをサーバー側で実行する場合は、攻撃にさらされることになります。クライアント側で実行したい場合は、シリアル化されたオブジェクトで使用するメソッドの名前を参照して、ローカル メソッドだけを使用することをお勧めします。
ただし、それ"f = "+function() {}
により、評価できる文字列バージョンが得られると思います。
var test = "f = " + function() { alert("Hello"); };
eval(test)
また、json を適切に処理するには、オブジェクトを json にシリアル化するための優れたメソッドを備えたプロトタイプをお勧めします。