我的wcf项目以json形式返回国家列表,在wcf项目中使用Newtonsoft 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}]"}
Country/Index从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);
}
您得到反斜杠是因为您正在对数据进行双重序列化。
- 在WCF代码中,调用
JsonConvert.SerializeObject()
将国家/语言列表序列化为JSON,然后再返回 - 在MVC控制器中,您可以调用WCF服务来获取列表,该列表已经是JSON格式的。但是,您将该JSON添加到另一个对象并调用
Json()
,这将导致列表再次序列化。这就是添加反斜杠的地方
要解决此问题,您要么需要
-
在将WCF服务返回的列表添加到MVC结果之前,先对其进行反序列化。
--或--
-
找到一种检索国家/语言列表的方法,而无需将其序列化为JSON。然后将未序列化的列表添加到MVC结果中,并将其正常序列化。