我有一个 REST
服务,它返回一个 json
序列化的 DataTable
。
当我向服务发出请求时,我没有收到任何数据(来自 chrome 的“未收到数据”),但是当我将返回类型更改为 string
并返回一个字符串时,该字符串是序列化的 DataTable
,一切正常(除了我必须解析 Json
字符串)。
//Doesn't Work
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
UriTemplate = "data")]
public DataTable LoadData2() {
return JsonQueryDatabase2(VCAPSProduction);
}
.
// Works, but returns a json string
[OperationContract]
[WebGet(ResponseFormat = WebMessageFormat.Json,
UriTemplate = "data")]
public string LoadData2() {
return JsonConvert.SerializeObject(JsonQueryDatabase2(connString));
}
如何让我的服务使用 DataTable 返回 Json 对象?
最佳答案
我最终选择了 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;
}
}
关于c# - 返回 json 数据表未收到数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22199739/