将对象序列化为json会生成双引号

时间:2016-12-21 05:40:53

标签: json wcf serialization

我有一个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":""}

1 个答案:

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