servicestack,C#,servicestack" /> servicestack,C#,servicestack" />

C# 使用带有servicestack的construtor反序列化json

C# 使用带有servicestack的construtor反序列化json,c#,servicestack,C#,servicestack,我有一个不可变的对象,我使用servicestack的框架将其序列化为json。现在我想将这个json字符串反序列化为真正的对象。但我的目标是不变的 有没有办法告诉servicestack json反序列化程序使用构造函数?我不想在属性中添加公共集 我找到了一种使用Newtonking Json反序列化器的方法,但servicestack中是否有等效的方法? 谢谢我不知道有什么简单的配置可以实现这一点,但您可以非常轻松地编写自定义反序列化程序: JsConfig<MyRequestCla

我有一个不可变的对象,我使用servicestack的框架将其序列化为json。现在我想将这个json字符串反序列化为真正的对象。但我的目标是不变的

有没有办法告诉servicestack json反序列化程序使用构造函数?我不想在属性中添加公共集

我找到了一种使用Newtonking Json反序列化器的方法,但servicestack中是否有等效的方法?


谢谢

我不知道有什么简单的配置可以实现这一点,但您可以非常轻松地编写自定义反序列化程序:

JsConfig<MyRequestClass>.DeSerializeFn = jsonString => {
    var obj = JsonObject.Parse(jsonString);
    return new MyRequestClass(obj.Get("PropertyA"), obj.Get("PropertyB"), ...);
}
JsConfig.DeSerializeFn=jsonString=>{
var obj=JsonObject.Parse(jsonString);
返回新的MyRequestClass(obj.Get(“PropertyA”)、obj.Get(“PropertyB”)、…);
}

有关更多信息,请参阅。

感谢您的解决方案。我真的不喜欢重新映射类的每个属性。我不明白为什么使用servicestack,使用ToJson()方法序列化我的不可变对象非常容易,但是当我想要反序列化它时,我需要手动映射每个属性。我目前的解决方法是使用Newton的json框架和JsonConstructor属性。我认为这里的问题与。理想情况是让DTO类专门为您的请求/响应类设计。因此,这里的另一种方法是创建具有可写属性的单独类进行反序列化,然后将DTO对象映射到服务层的不可变对象。