私は WCF に少し慣れていないので、私がやろうとしていることを明確に説明しようとします。
JSON 要求を使用する WCF Web サービスがあります。ほとんどの場合、JSON の送受信は正常に行われています。たとえば、次のコードは正常に機能し、期待どおりに機能します。
JSON 送信:
{ "guy": {"FirstName":"Dave"} }
WCF:
[DataContract]
public class SomeGuy
{
[DataMember]
public string FirstName { get; set; }
}
[OperationContract]
[WebInvoke(Method = "POST",
BodyStyle = WebMessageBodyStyle.WrappedRequest,
RequestFormat = WebMessageFormat.Json,
ResponseFormat = WebMessageFormat.Json)]
public string Register(SomeGuy guy)
{
return guy.FirstName;
}
これにより、期待どおり「Dave」を含む JSON オブジェクトが返されます。問題は、受け取った JSON が DataContract のメンバーと正確に一致することを常に保証できるとは限らないことです。たとえば、JSON:
{ "guy": {"firstname":"Dave"} }
大文字と小文字が一致しないため、正しくシリアライズされません。guy.FirstName は null になります。この動作は理にかなっていますが、これを回避する方法がよくわかりません。クライアントでフィールド名を強制する必要がありますか、またはサーバー側で調整する方法はありますか?
おそらく関連する質問: 一般的な JSON オブジェクトを受け入れて、StringDictionary または何らかの単純なキー値構造にシリアル化できますか? では、JSON で送信されたフィールド名に関係なく、送信された名前と値にアクセスできますか? 現在、受け取ったデータを読み取る唯一の方法は、事前定義された DataContract と正確に一致する場合です。