首页 新闻 会员 周边

WCF 返回Json数据有双引号怎么去掉

0
悬赏园豆:50 [已解决问题] 解决于 2012-11-28 18:51
服务端:
[WebGet(UriTemplate = "GetData",ResponseFormat=WebMessageFormat.Json)]
        public String GetData()
        {
            return  "Hello";
        }

客户端返回值是 :"\"Hello\""

上面是监视窗口中的值,实际上就是返回值外部加了双引号,问题就是怎么去掉这个双引号

我希望是在服务器端解决,或是我的配置哪出问题了

客户端去掉双引号的方法就不需要啦

Sanco的主页 Sanco | 菜鸟二级 | 园豆:236
提问于:2012-11-28 17:56
< >
分享
最佳答案
2
[OperationContract]
[WebGet(UriTemplate = "Hello")]
Stream Get(string name);
 public Stream Hello(string name)
        {
            string jsCode = "Hello";
            return new MemoryStream(Encoding.UTF8.GetBytes(jsCode));
        }

 

找到解决办法啦,WebMessageFormat.Json就是会在返回值上加双引号

上面是我的解决办法,希望能帮到一些人

其实一般情况下不会遇到我的问题,但是做服务封装的时候估计会遇到~

Sanco | 菜鸟二级 |园豆:236 | 2012-11-28 18:48

不错,谢谢。

陈永东 | 园豆:184 (初学一级) | 2017-12-23 08:43
其他回答(4)
0

http://www.json.org/json-zh.html

json 中字符串必须用双引号括起来。

 

然后你通过调试器查看值的时候,字符串中的特殊字符会被转义后显示出来。你可以通过将其写入控制台或文件来看到真正的值。

收获园豆:15
Launcher | 园豆:45045 (高人七级) | 2012-11-28 18:01

真正的值是"Hello" 而我想要的是 Hello

支持(0) 反对(0) Sanco | 园豆:236 (菜鸟二级) | 2012-11-28 18:43

@Sanco: 在传输中的值是 "Hello",而在JSON中真正的值是 Hello,双引号""表示这是一个字符串类型,而不是别的其它数据类型。

你的响应中 Content-Type 为 application/json,那么按照 json 文法来解析的时候,如果你只返回一个 Hello ,而不是返回 "Hello",解析器在解析的时候会报语法错误。这就是典型的接口定义二义性。国内很多厂商都这么做,给第三方开发带来很大的麻烦。

支持(0) 反对(0) Launcher | 园豆:45045 (高人七级) | 2012-11-29 09:42
0

监视窗口的值表示这是一个string值,你可以客户端调用直接输出看看是不是没有引号

收获园豆:15
Rich.T | 园豆:3440 (老鸟四级) | 2012-11-28 18:02

真正的值是"Hello" 而我想要的是 Hello

支持(0) 反对(0) Sanco | 园豆:236 (菜鸟二级) | 2012-11-28 18:43
0

这个json的格式,对你有影响吗。

收获园豆:15
geass.. | 园豆:1821 (小虾三级) | 2012-11-28 18:06

有哇,这个不解决以后每次客户端都是需要做处理啊

支持(0) 反对(0) Sanco | 园豆:236 (菜鸟二级) | 2012-11-28 18:43
0

用js直接replace如:data= data.replace("\","")《考虑用正则表达式替换多个》; 然后data=eval(data);即可

收获园豆:5
az235 | 园豆:8483 (大侠五级) | 2012-11-28 18:48
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册