【问题标题】:Return Json, but it includes backward slashes “\”,返回 Json,但它包含反斜杠“\”,
【发布时间】:2014-12-25 11:01:14
【问题描述】:

我正在使用 MVC 4 web api,这是我返回数据的方法。

    [HttpPost]
    public string GetResults([Body] student params)
    {
        return studentSearchService.GetResults(params);
    }

这是来自 Angular 的服务调用

         function Get(){
          var Promise = $http.post('studentAPI/GetResults', params)
                .success(function (data) {
          // here backslash added to object
          }) }

这就是它的样子

   "{\"cid\":1,\"model\":\"WT50JB\",\"detail\":\"sdf??\",\"unit\":2,\"time_in\":\"2012-12-11T19:00:00\",\"time_out\":\"2012-12-12T13:00:06.2774691+07:00\",\"time_used_dd\":0.0,\"time_used_hh\":0.0}"

这里缺少什么?

【问题讨论】:

  • 我在这里遗漏了什么吗?您从服务器获取Get 数据的方法是HttpPost 动词?
  • 传递输入参数
  • 嗯,在我看来仍然不合适。无论哪种方式,示例代码都没有告诉我们'\' 符号的来源......GetResults() 函数就是发生这种情况的地方。

标签: .net json angularjs model-view-controller asp.net-web-api


【解决方案1】:

为什么要从 Web api 返回一个 json 字符串?
它知道如何将对象序列化为 JSON 的自动

无论如何要将字符串json转换为json使用JSON.parse:

var json = "{\"cid\":1,\"model\":\"WT50JB\",\"detail\":\"sdf??\",\"unit\":2,\"time_in\":\"2012-12-11T19:00:00\",\"time_out\":\"2012-12-12T13:00:06.2774691+07:00\",\"time_used_dd\":0.0,\"time_used_hh\":0.0}";
var parsedJSON = JSON.parse(json);

alert(parsedJSON.cid); // 1

【讨论】:

  • 当我这样做时,它说 cid 未定义..即使我在控制台中登录它仍然显示为字符串
  • 我们不想在服务器端做任何事情,这就是我们返回字符串的原因
  • 我只是在此处复制粘贴我的代码:jsfiddle.net/qou8ocv7,它可以工作。你不会错过任何东西 - 你应该从你的控制器返回一个强类型对象,并将 web-api 保留为序列化部分。
  • ""{\"cid\":1,\"model\":\"WT50JB\",\"detail\":\"sdf??\",\"unit\" :2,\"time_in\":\"2012-12-11T19:00:00\",\"time_out\":\"2012-12-12T13:00:06.2774691+07:00\",\"time_used_dd \":0.0,\"time_used_hh\":0.0}"";.. 这是它的返回方式。在您给出的示例中尝试上述方法时,它没有用
  • 那么您的 JSON 生成中有一个错误 - 该 json 会导致您的客户端出现 js 错误。
猜你喜欢
  • 2012-11-29
  • 2022-07-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多