我有一个现有的应用程序,它发送一个名为'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: 看起来有点像'hacky'
public class Grid
{
private string _filters;
public dynamic Filters {
get
{
ServiceStack.Text.JsonSerializer<IList<Filter().DeserializeFromString(_filters);
}
set
{
_filters = value;
}
}
}
答案 0 :(得分:0)
您可以send Complex objects in ServiceStack使用JSV Format。
如果您想通过QueryString发送JSON,可以使用以下内容从Service of Request过滤器中访问它:
public object Any(Request req) {
var filters = base.Request.QueryString["Filters"].FromJson<List<Filter>>();
}