如何反序列化时
问题描述:
我试图使用库与非类似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 ContractResolver
在Newtonsoft.Json
中克服了这个问题。应该如何使用来完成?
我不想用DataMember
属性修饰我的dto类,因为这似乎是数据源的关注点,而不是dto本身,因此应该由执行反序列化的代码来处理。
答
看JsConfig所有不同的配置和定制,这ServiceStack's JSON and text serializers支持,e.g:
JsConfig.EmitLowercaseUnderscoreNames = true;
应该做你想要什么。
谢谢,这看起来我需要什么。我只需要为特定的dto类型配置它,并且'EmitLowercaseUnderscoreNames'似乎从该配置方法中缺少,将尝试并将今天的解决此问题的pull请求放在一起。 – roryf 2013-02-12 12:30:45
繁荣:https://github.com/ServiceStack/ServiceStack.Text/pull/279 – roryf 2013-02-12 13:16:16
奇怪,我不得不突然使用这个。我想知道某个地方的更新是否会导致默认值发生变化。 – theoutlander 2015-09-22 02:27:09