Generische WCF-JSON-Deserialisierung

Ich bin ein bisschen neu in WCF und werde versuchen klar zu beschreiben, was ich versuche zu tun.

Ich habe einen WCF-Webservice, der JSON-Anforderungen verwendet. Ich kann JSON größtenteils gut senden / empfangen. Der folgende Code funktioniert beispielsweise gut und wie erwartet.

JSON gesendet:

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

Dies gibt erwartungsgemäß ein JSON-Objekt mit "Dave" zurück. Das Problem ist, dass ich nicht immer garantieren kann, dass der JSON, den ich erhalte, genau mit den Mitgliedern in meinem DataContract übereinstimmt. Zum Beispiel das JSON:

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

wird nicht korrekt serialisiert, da der Fall nicht übereinstimmt. guy.FirstName wird null sein. Dieses Verhalten ist sinnvoll, aber ich weiß nicht wirklich, wie ich das umgehen soll. Muss ich die Feldnamen auf dem Client erzwingen oder kann ich sie auf dem Server abgleichen?

Eine möglicherweise damit zusammenhängende Frage: Kann ich ein generisches JSON-Objekt akzeptieren und in ein StringDictionary oder eine einfache Schlüsselwertstruktur serialisieren? Unabhängig davon, welche Feldnamen in JSON gesendet werden, kann ich auf Namen und Werte zugreifen, die an mich gesendet wurden. Derzeit kann ich die empfangenen Daten nur lesen, wenn sie genau mit einem vordefinierten Datenvertrag übereinstimmen.

Antworten auf die Frage(5)

Ihre Antwort auf die Frage