我有一个不可变的对象,我使用servicestack的框架序列化为json。现在我想将这个json字符串反序列化为真实对象。但我的目标是不可改变的。
有没有办法告诉servicestack json反序列化器使用构造函数?我不想在我的属性中添加公共集。
我找到了一种使用Newtonking Json Deserializer的方法,但是在servicestack中是否存在等价物? http://james.newtonking.com/projects/json/help/index.html?topic=html/T_Newtonsoft_Json_JsonConstructorAttribute.htm
由于
答案 0 :(得分:2)
我不知道会启用这个的简单配置,但你可以很容易地写一个自定义反序列化器:
JsConfig<MyRequestClass>.DeSerializeFn = jsonString => {
var obj = JsonObject.Parse(jsonString);
return new MyRequestClass(obj.Get("PropertyA"), obj.Get("PropertyB"), ...);
}
有关详细信息,请参阅this related answer。