参考:https://www.jb51.net/article/96343.htm。该介绍里共讲解了3钟方法,由于前两种看起来较繁琐,所以我采用了方法3:
方法3:使用Json.Net DLL (Newtonsoft)。
这个方法中要添加Json.Net DLL引用,我们可以从Newtonsoft下载Json.Net DLL,再导入命名空间,完成webserveice 方法的代码如下
using Newtonsoft.Json; //该引用是通过nuget程序包搜索:newtonsoft.json v 5.0.4下载,该引用是将datatable转换成json数据的关键
using Newtonsoft.Json.Converters;//json格式转换引用
[WebMethod]
public string find_Room(string see_room)
{
try
{
//通过引用外部插件将datatable数据转换成json格式
string find_json = @"SELECT * FROM 表 WHERE 条件 " ;
DataTable dt = bc.QueryCommand(find_json);//调用方法
string JsonString = string.Empty;//返回只读字段
//JsonString = JsonConvert.SerializeObject(dt);//该转换的方法,但因微软时间格式问题,时间中间空格带了个T
IsoDateTimeConverter timeConverter = new IsoDateTimeConverter { DateTimeFormat = "yyyy-MM-dd HH:mm:ss" };//将json的时间格式强制转换
JsonString = JsonConvert.SerializeObject(dt, Formatting.Indented, timeConverter);
return JsonString;
}
catch (Exception ex)
{
return ex.Message;
}
// return dt;
}
需要注意的点:1.nuget下载这个Newtonsoft.Json,真的是有点麻烦,一直提示nuget版本与Newtonsoft不符合,需要升级Nuget管理程序。解决:通过工具--》扩展与更新--》更新nuget程序包管理器后,重启电脑再打开nuget,搜索Newtonsoft.json,然后拉到下面找到Newtonsoft.Json V5.0.4这个下载安装,才可以正式引用成功。2.微软时间格式转换的问题,采用时间格式强制转换后解决空格带T的问题。