ServiceStack - 请求绑定JSON编码参数

时间:2012-12-13 18:33:58

标签: servicestack

我有一个现有的应用程序,它发送一个名为'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;
    }
  }
}

1 个答案:

答案 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>>();
}

注意:Interfaces on DTOs are bad practice