Deserialización genérica de WCF JSON

Soy un poco nuevo en WCF y trataré de describir claramente lo que estoy tratando de hacer.

Tengo un servicio web WCF que utiliza solicitudes JSON. Estoy bien enviando / recibiendo JSON en su mayor parte. Por ejemplo, el siguiente código funciona bien y como se esperaba.

JSON envió:

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

Esto devuelve un objeto JSON con "Dave" como se esperaba. El problema es que no siempre puedo garantizar que el JSON que recibo coincida exactamente con los miembros de mi DataContract. Por ejemplo, el JSON:

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

no se serializará correctamente porque el caso no coincide. guy.Primer nombre será nulo. Este comportamiento tiene sentido, pero realmente no sé cómo solucionarlo. ¿Tengo que forzar los nombres de campo en el cliente o hay alguna forma de conciliarme en el lado del servidor?

Una pregunta posiblemente relacionada: ¿puedo aceptar y serializar un objeto JSON genérico en un StringDictionary o algún tipo de estructura de valor de clave simple? Entonces, sin importar los nombres de campo que se envían en el JSON, ¿puedo acceder a los nombres y valores que me han enviado? En este momento, la única forma en que puedo leer los datos que estoy recibiendo es si coincide exactamente con un DataContract predefinido.

Respuestas a la pregunta(5)

Su respuesta a la pregunta