Общая десериализация WCF JSON
Я немного новичок в 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 будет нулевым. Такое поведение имеет смысл, но я не знаю, как обойти это. Нужно ли принудительно указывать имена полей на клиенте или есть способ согласования на стороне сервера?
Возможно связанный вопрос: могу ли я принять и сериализовать универсальный объект JSON в StringDictionary или какую-то простую структуру значения ключа? Поэтому независимо от того, какие имена полей отправляются в JSON, я могу получить доступ к именам и значениям, которые были отправлены мне? Прямо сейчас, единственный способ, которым я могу прочитать данные, которые я получаю, - если они точно соответствуют предопределенному DataContract.