如何在查询字符串中传递复杂类型列表?

时间:2012-02-24 11:26:17

标签: servicestack

如何在ServiceStack中传递复杂类型列表?例如,我的Request DTO看起来像这样:

//Request DTO
public class Test
{
    public IList<Fund> Funds { get; set; }
}

public class Fund
{
    public string Key { get; set; }
    public int Percent { get; set; }
}

如何通过HTTP get传递序列化对象?

http://localhost:49490/api/funds={ ?? }
  

KeyValueDataContractDeserializer:转换为类型时出错:类型定义应以“{”开头,期待序列化类型“基金”,字符串开头为:asdf

1 个答案:

答案 0 :(得分:10)

ServiceStack使用JSV Format解析queryString这基本上是带有CSV样式引号的JSON(即当你的值有一个转义字符时只需要引号)。

虽然您尚未在此处定义自定义路线,但在大多数情况下,您的自定义路线与您的请求DTO相同,在这种情况下测试而不是 / funds

因此,假设自定义路线如下:

Routes.Add<Test>("/test");

您可以通过QueryString调用您的服务,如:

的http://本地主机:49490 / API /测试基金= [{键:密钥1,百分比:1},{键:密钥2,百分比:2}]

侧面说明DTO上的接口通常是一个坏主意,您应该考虑在任何时候避免(至少限制)它的使用。