Я немного новичок в WCF и попытаюсь четко описать, что я пытаюсь сделать.
У меня есть веб-сервис WCF, который использует запросы JSON. Я отлично выполняю отправку/получение 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;
}
Это возвращает объект JSON с "Dave", как ожидалось. Проблема в том, что я не всегда могу гарантировать, что получаемый JSON будет точно соответствовать членам моего DataContract. Например, JSON:
{ "guy": {"FirstName":"Dave"} }
не будет правильно сериализоваться, потому что случай не совпадает. guy.FirstName будет null. Такое поведение имеет смысл, но я действительно не знаю, как обойти это. Должен ли я принудительно вводить имена полей на клиенте или есть способ, который я могу согласовать на стороне сервера?
Возможно, связанный вопрос: могу ли я принять и сериализовать общий объект JSON в StringDictionary или какую-то простую структуру значений ключа? Итак, независимо от того, какие имена полей отправлены в JSON, я могу получить доступ к именам и значениям, которые были отправлены мне? Прямо сейчас, единственный способ, которым я могу читать данные, которые я получаю, - это точно соответствовать предопределенному DataContract.