ServiceStack-请求绑定JSON编码参数



我有一个现有的应用程序,它发送一个名为"filters"的参数的Request。"filters"参数包含一个JSON编码的字符串。示例:

[{"dataIndex":"fieldName", "value":"fieldValue"}, {"dataIndex":"field2", "value":"value2"}]. 

使用ServiceStack,我想将其绑定为C#对象(类Grid)上的属性是否有首选的方法来处理此问题以下是我能想到的选项。我认为这两种"感觉"都不正确。

选项1:我确实有一个"ServiceModel"项目,这会对它产生依赖,但我并不喜欢
在AppHost.Configure()方法中添加

RequestBinders[typeof(Grid)] => httpReq => { 
return new Grid() { 
Filters = new ServiceStack.Text.JsonSerializer<IList<Filter>>().DeserializeFromString(httpReq.QueryString["filters"])
}
}

选项2:看起来有点像"黑客">

public class Grid
{
private string _filters;
public dynamic Filters { 
get 
{
ServiceStack.Text.JsonSerializer<IList<Filter().DeserializeFromString(_filters);
}
set
{
_filters = value;
}
}
}

您可以使用JSV格式在ServiceStack中发送复杂对象。

如果你想通过QueryString发送JSON,你可以从你的请求服务过滤器中访问它,比如:

public object Any(Request req) {
var filters = base.Request.QueryString["Filters"].FromJson<List<Filter>>();
}

注意:DTO上的接口是不好的做法。

最新更新