2013-02-11 65 views
6

我試圖使用​​庫與非類似C#的屬性名稱約定反序列化JSON數據,如以下具體蛇的情況下配置ServiceStack.Text JsonSerializer屬性名稱:如何反序列化時

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

我想反序列化到POCO這樣的:

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

我目前只是在做這樣的:

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

但這不會識別屬性名稱。我以前使用custom ContractResolverNewtonsoft.Json中克服了這個問題。應該如何使用​​來完成?

我不想用DataMember屬性修飾我的dto類,因爲這似乎是數據源的關注點,而不是dto本身,因此應該由執行反序列化的代碼來處理。

回答

8

JsConfig所有不同的配置和定製,這ServiceStack's JSON and text serializers支持,e.g:

JsConfig.EmitLowercaseUnderscoreNames = true; 

應該做你想要什麼。

+0

謝謝,這看起來我需要什麼。我只需要爲特定的dto類型配置它,並且'EmitLowercaseUnderscoreNames'似乎從該配置方法中缺少,將嘗試並將今天的解決此問題的pull請求放在一起。 – roryf 2013-02-12 12:30:45

+0

繁榮:https://github.com/ServiceStack/ServiceStack.Text/pull/279 – roryf 2013-02-12 13:16:16

+0

奇怪,我不得不突然使用這個。我想知道某個地方的更新是否會導致默認值發生變化。 – theoutlander 2015-09-22 02:27:09