我有一个http invokable wcf服务方法;
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json,
BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/CheckHMAC/{hMac}")]
public string CheckId(string Id)
{
Result result = new Result() { OTP = 1, IsSuccessful = false, CustomerId = "" };
return JsonConvert.SerializeObject(result);
}
此方法产生类似的输出
" {\" IsSuccessful \":假,\" OTP \":1,\"客户ID \":\& #34; \"}"
使用此方法的客户端会抱怨此格式,因为它无效,我已经与其他客户端进行了测试,是的,它似乎无效。到现在为止,我从来没有像这样的问题,输出应该很容易反序列化,为什么json对象用双引号包装?如何获得有效的json字符串?
{" IsSuccessful":假," OTP":1,"客户ID":""}
答案 0 :(得分:1)
好吧,尽管经过长时间的搜索,我似乎错过了这个post。这里的错误是方法签名: string ;
.. API控制器将字符串序列化为JavaScript字符串 literal - 这将导致字符串用双引号括起来 导致字符串中的任何其他特殊字符用a转义 反斜杠。
因此,只返回对象本身,使json数据对客户端有效。
[WebInvoke(Method = "GET", ResponseFormat = WebMessageFormat.Json, BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "/CheckHMAC/{hMac}")]
public Result CheckId(string Id)
{
Result result = new Result() { OTP = 1, IsSuccessful = false, CustomerId = "" };
return result;
}