【问题标题】:How to access JSON data from a returned string from WCF如何从 WCF 返回的字符串访问 JSON 数据
【发布时间】:2013-11-23 07:16:09
【问题描述】:

我有一个 WCF 服务,它使用 OperationContract 返回一个简单的字符串,如下所示:

[WebInvoke(Method = "POST", ResponseFormat = WebMessageFormat.Json]

我返回字符串"error2",并且我还尝试像这样预先解析它:

return Newtonsoft.Json.JsonConvert.SerializeObject(new { result = "error2" });

在第一次尝试中(没有在服务器上解析),当我读入客户端 JSON.parse(e.response) 并访问结果时,我得到error2 而不是"error2" 字符串。

我尝试了这两个选项,但仍然无法弄清楚如何从 WCF 正确返回一个字符串并将结果(“error2”)作为 Javascript 中的客户端字符串读取。

我认为我在客户端、服务器或两者上都做错了。

我尝试了什么:

var json = JSON.parse(e.response) 
alert(json.result) <-- give me error2 instead of a string

也试过这个:

服务器 (WCF)

 return Newtonsoft.Json.JsonConvert.SerializeObject(new { result = "\"error2\"" });

在客户端

var json = JSON.parse(e.response);
alert(json.result);
alert(e.response);
alert((e.response).result);

分别获取:undefined"{\"result":\"\\\"error\\\"\"}"undefined

试试 3

在服务器上

return "error2";

在客户端

alert(e.response); <-- "error2"

但是,当我尝试比较以下内容时:

alert(e.response === "error2")

我得到false 而不是true。我使用 PostMan chrome 插件仔细检查了结果,返回值确实是“错误 2”。

更新:我认为文本的 unicode 可能存在问题。我尝试比较两个“错误”字符串,一个是从 WCF 获得的,一个是从常规输入获得的,并在使用 Base 64 对它们进行编码时得到不同的结果。有没有办法在 utf-8 中做出 WCF 响应,所以两个字符串可以相等,因此使用 JSON 数据访问属性名称会起作用吗?

是否有控制 WCF 输出编码的选项?

【问题讨论】:

    标签: javascript asp.net json wcf parsing


    【解决方案1】:

    尝试转义你的引号

    result = "\"error2\""
    

    【讨论】:

    • 不工作,我根据您告诉我的操作使用警报结果更新问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-03-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 2011-03-05
    相关资源
    最近更新 更多