2012-02-20 10 views
2

職場の一部のWCFサービスで使用するためにGeoJSONをDataContractsにマップしようとしています。 GeoJSONには "type"というフィールドがあり、DataContracts-serializationは、正しいサブタイプのデシリアライズをサポートするために、フィールド "_ _type"に依存します。私のDataContractsはすべてGeoJSON仕様に基づいていますが、DataContractsのNamespaceを ""に設定していますので、基本的にGeoJSONを実装しました< ==> DataContracts(フィールド)を使用するフィールド "__type"の代わりに "type"を使用します。WCFサービスで__type-fieldの名前を変更しました

WCFまたはDataContractシリアライザにタイプ情報を調べるフィールドを教えてもらえますか? 実際にが__type-fieldを使用しているJSON標準をサポートするにはどうすればよいですか?

答えて

1

できません。 __typeは、DataContractJsonSerializerの最も基本的なレベルでハードコードされています。

これは、他のシリアライザ、データコントラクトリゾルバ、またはデータコントラクトサロゲートの周りをラップして、__typeにあるものを(シリアル化で)型指定し、__typeに型を移すデシリアライズ時)。これは非常に頭痛の余分な手作業です。

独自のシリアライザを作成することもできます。 Reflectorを介してDataContractJsonSerializerをどのように見て、ライターやリーダーと模倣し、DataContractJsonSerializerが使用されているか、またはインスタンス化されているかどうかを分析するだけで、考えるのは難しいことではありません。

4つ目のオプションは__typeを理解していた、MicrosoftAjax.jsを使用することで、その後、何とかにGeoJSONと一緒にそれを使用

JSON .NETのようにあなたが持っている第三の選択肢は、に全くちょうどおそらく別のシリアライザにあります(私はそれが可能なのかどうかはわかりませんが、潜在的な考えとしてそこに投げ込むだけです)

関連する問題