2013-02-11 9 views
6

Ich versuche, JSON-Daten deserialisieren mit der ServiceStack.Text Bibliothek mit Nicht-C# -ähnliche Eigenschaftsnamen Konventionen, insbesondere Schlange Fall wie folgt aus:Wie ServiceStack.Text JsonSerializer Eigenschaftsnamen konfigurieren, wenn Deserialisieren

{ 
    "first_name": "Foo", 
    "last_name": "Bar" 
} 

ich möchte diese in eine POCO deserialisieren:

public class MyDto 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
} 

ich bin derzeit gerade, dies zu tun:

var dto = JsonSerializer.DeserializeFromString<MyDto>(dtoData); 

aber dies wird die Eigenschaftsnamen nicht erkennen. Ich habe dies zuvor in Newtonsoft.Json mit einem custom ContractResolver überwunden. Wie sollte dies unter Verwendung von ServiceStack.Text geschehen?

Ich würde es vorziehen, meine dto-Klasse nicht mit DataMember Attributen zu dekorieren, da dies ein Problem der Quelle der Daten, nicht der dto selbst, scheint und daher von dem Code behandelt werden sollte, der die Deserialisierung durchführt.

Antwort

8

Blick auf JsConfig für alle anderen Konfiguration und Anpassungen, die ServiceStack's JSON and text serializers unterstützt, z:

JsConfig.EmitLowercaseUnderscoreNames = true; 

tun sollten, was Sie wollen.

+0

Danke, das sieht aus, was ich brauche. Ich muss es nur für bestimmte Dto-Typen konfigurieren und 'EmitLowercaseUnderscoreNames' scheint bei dieser Konfigurationsmethode zu fehlen, wird versuchen, eine Pull-Anfrage zu erstellen, um das heute zu beheben. – roryf

+0

Boom: https://github.com/ServiceStack/ServiceStack.Text/pull/279 – roryf

+0

Seltsam, dass ich das plötzlich verwenden musste. Ich frage mich, ob ein Update irgendwo den Standardwert verursacht haben könnte. – theoutlander

Verwandte Themen