JsonServiceClient返回具有正确属性但为空值的响应

时间:2017-12-20 11:04:18

标签: c# json servicestack

我正在尝试在外部服务上发出JSON请求,如下所示:

GET请求:

https://remotehost/path/mycount?foo=C&bar=21

回复:

{"count":1000}

为此,我使用ServiceStack JsonServiceClient,这是我的代码

var client = new JsonServiceClient(classifiedSearchBaseURL);
var response = client.Get<CountResponse>(new MyRequest {
    foo = "C",
    bar = 21
});

class MyRequest
{    
    public string foo { get; set; }
    public int bar { get; set; }
}

class CountResponse
{
    public string count;
}

问题是我得到一个带有属性的响应对象&#34; count&#34;即使服务器使用正确的值/响应回答200(使用Fiddler)

,也为null

我尝试将计数类型从字符串更改为int,但后来我得到0而不是null。

你们任何人都有想法吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:3)

默认情况下,ServiceStack仅序列化公共属性,因此您需要将Response DTO更改为:

class CountResponse
{
    public string count { get; set; }
}

我还建议添加IReturn<T>标记界面,例如:

class MyRequest : IReturn<CountResponse>
{    
    public string foo { get; set; }
    public int bar { get; set; }
}

因此,客户可以自动推断响应类型,以便您的呼叫站点可以简化为:

var response = client.Get(new MyRequest { foo = "C", bar = 21 });