我有REST
服务,该服务返回json
序列化DataTable
。
当我向服务发出请求时,我没有获得数据(“没有收到数据”来自chrome),但是当我将返回类型更改为string
并返回一个序列化{{1}的字符串时一切正常(除了我必须解析DataTable
字符串)。
Json
//Doesn't Work
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
UriTemplate = "data")]
public DataTable LoadData2() {
return JsonQueryDatabase2(VCAPSProduction);
}
如何使用DataTable让我的服务返回Json对象?
答案 0 :(得分:2)
我最终得到了L.B的建议。
using Newtonsoft.Json; // JsonConvert.SerializeObject
...
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
UriTemplate = "data?limit={limit}")]
public System.ServiceModel.Channels.Message LoadData_Limited(int limit) {
if (limit <= 0) { return null; }
string query = ...;
try {
...
//Return data from query
DataTable dt = QueryDatabase(connString, query, parameters);
string serialized = JsonConvert.SerializeObject(dt);
return WebOperationContext.Current.CreateTextResponse(serialized);
} catch {
return null;
}
}