6

タイトルのとおり、読み取り専用モデルのプロパティが Web API プロジェクトでシリアル化されていません。MVC 4 Web API、VS2010。

MVC 4 Web APIベータ版は読み取り専用プロパティの JSON シリアル化をサポートしていないと述べている、この stackoverflow の質問のような多数の投稿を見てきました。しかし、多くの追加の参考文献では、最終リリースでは DataContractJsonSerializer の代わりに JSON.NET が使用されているため、問題を解決する必要があると述べられています。

この問題は解決されましたか? そうでない場合、シリアライゼーションを取得するためだけに偽のセッターを挿入する必要がありますか?


訂正、JSON で動作するように見えますが (申し訳ありません!)、XML には問題があります。前と同じ質問ですが、XMLシリアライゼーションのコンテキストで。

4

1 に答える 1

7

デフォルトの JSON シリアライザーは Json.NET になりました。したがって、読み取り専用のプロパティのシリアル化は、何もしなくても機能するはずです。

XML の場合、4.5 でこのフラグを DataContractSerializer に追加しました。

http://msdn.microsoft.com/en-us/library/vstudio/system.runtime.serialization.datacontractserializersettings.serializereadonlytypes.aspx

次のように書けるはずです。

config.Formatters.XmlFormatter.SetSerializer(myType, new DataContractSerializer(myType, new DataContractSerializerSettings() { SerializeReadOnlyTypes = true });

このコードを で呼び出される関数に配置しGlobalConfiguration.ConfigureますApplication_Start。デフォルトでは、これはWebApiConfig.Register().

于 2013-01-22T16:17:35.180 に答える