【问题标题】:svc webservice response contains extra double qotationsvc web 服务响应包含额外的双引号
【发布时间】:2017-12-13 12:33:04
【问题描述】:

我有一个 json 存储在数据库中的 ntext 字段中,我想在 svc (c#) webservice 中返回它,webservice 是 get 并且响应类型是字符串,如下所示:

    [WebInvoke(Method = "GET",
       ResponseFormat = WebMessageFormat.Json,
            BodyStyle = WebMessageBodyStyle.Bare, UriTemplate = "gcwbcc/{cityCode}/{key}")]

但结果我得到额外的双引号,json中的所有双引号都转换为\",那么我有两个问题,一个是额外的双引号,第二个是结果中的转换"到\"。

【问题讨论】:

  • 这是一个转义的 JSON 字符串。 { "prop" : "value" } 将变为 "{\"prop\":\"value\"}" 似乎代码将存储的 json 视为一个简单的字符串,您可能必须解析它并返回一个对象然后返回它,或者您可以将其作为原始响应发送然后它不会逃脱。
  • 嗨,感谢您添加评论,是否有任何内置对象可以将字符串转换为它。我用单个字符串“a”和“作为响应显示”来测试 web 服务,我希望响应只是一个不是“a”

标签: c# json web-services svc


【解决方案1】:

我通过将 web 方法的返回类型更改为流来解决它 并写下这行简单的代码:

byte[] resultBytes = Encoding.UTF8.GetBytes(result); WebOperationContext.Current.OutgoingResponse.ContentType = "应用程序/json; charset=utf-8"; return new MemoryStream(resultBytes);

参考: Returning raw json (string) in wcf 但这是原始指南 https://blogs.msdn.microsoft.com/carlosfigueira/2008/04/17/wcf-raw-programming-model-web/

【讨论】:

    猜你喜欢
    • 2016-11-17
    • 1970-01-01
    • 1970-01-01
    • 2016-08-07
    • 2016-10-21
    • 1970-01-01
    • 1970-01-01
    • 2016-09-07
    • 2012-09-23
    相关资源
    最近更新 更多