Jtable字段选项不显示json,因为它包含/(斜杠)

时间:2014-08-28 09:41:14

标签: wcf json.net jquery-jtable

我的wcf项目使用Newtonsoft json在wcf项目解析中将Countries List作为json返回。我在我的客户端网站上建立了基于mvc的json,我在jquery中使用jtable插件显示数据。插件无法显示,因为json包含/(反斜杠)。

显示jtable的代码是

 Name:{
                    title: 'Country Name',
                    width: '40%',
                    options: '/Country/Index'
}

国家/指数结果

{"Result":"OK","Options":"[{\"DisplayText\":\"India\",\"Value\":1},{\"DisplayText\":\"Singapore\",\"Value\":2}]"}

国家/索引从wcf服务获得结果。有没有办法剥离/在json。

编辑: 我的wcf代码是

 List<JSONDisplayNameValue> lstLanguages = new List<JSONDisplayNameValue>();
//Get data from db. 
//JSONDisplayNameValue has two variables DisplayName, Value
  var json = JsonConvert.SerializeObject(lstLanguages);
        return  json;

国家/索引mvc代码

public JsonResult Index()
    {
        string Countries_list = processsvc.GetAllCountries();
        return Json(new { Result = "OK", Options = Countries_list },  JsonRequestBehavior.AllowGet);
    }

1 个答案:

答案 0 :(得分:0)

您正在使用反斜杠,因为您要对数据进行双重序列化。

  • 在您的WCF代码中,您可以在返回之前致电JsonConvert.SerializeObject()将您的国家/语言列表序列化为JSON。
  • 在MVC控制器中,您调用WCF服务以获取已经采用JSON格式的列表。但是,然后将JSON添加到另一个对象并调用Json(),这会导致列表第二次序列化。这就是添加反斜杠的地方。

要解决此问题,您需要

  • 在将其添加到MVC结果之前,反序列化从WCF服务返回的列表。

    - 或 -

  • 设法检索国家/语言列表,而不将其序列化为JSON。然后将未序列化的列表添加到MVC结果中并正常序列化。