Desserialização JSON genérica do WCF

Sou um pouco novo no WCF e tentarei descrever claramente o que estou tentando fazer.

Eu tenho um serviço da web WCF que usa solicitações JSON. Estou indo bem enviando / recebendo JSON na maior parte. Por exemplo, o código a seguir funciona bem e conforme o esperado.

JSON enviado:

{ "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;
    }

Isso retorna um objeto JSON com "Dave" conforme o esperado. O problema é que nem sempre posso garantir que o JSON que eu recebo corresponda exatamente aos membros do meu DataContract. Por exemplo, o JSON:

{ "guy": {"firstname":"Dave"} }

não serializará corretamente porque o caso não corresponde. guy.FirstName será nulo. Esse comportamento faz sentido, mas eu realmente não sei como contornar isso. Preciso forçar os nomes dos campos no cliente ou existe uma maneira de me reconciliar no lado do servidor?

Uma questão possivelmente relacionada: posso aceitar e serializar um objeto JSON genérico em um StringDictionary ou algum tipo de estrutura simples de valor-chave? Portanto, não importa quais nomes de campo sejam enviados no JSON, eu posso acessar nomes e valores que foram enviados para mim? No momento, a única maneira de ler os dados que estou recebendo é se eles correspondem exatamente a um DataContract predefinido.

questionAnswers(5)

yourAnswerToTheQuestion