[英]WCF Rest Service in JSON and jQuery
我在以JSON公开WCF REST服务并尝试从jQuery使用它时遇到了一些问题。
我采用的第一个理想方法与此类似。 但是我遇到了一个问题,即返回带有IsReference = true批注的JSON不好,尽管如果我返回XML也可以。
第二种方法是返回XML并在jQuery中使用它。 但是由于jQuery喜欢JSON,所以我不喜欢此选项。
另一个人可能已经在遵循此解决方案尝试使用JSON.Net,但是在描述中作者并不建议将其用于生产。
我现在所拥有的是第一种使用IsReference = false注释的方法,我认为这有点麻烦,并且为了解决循环引用,我手动删除了这些循环,例如:
var queryResult =
from a in DbContext.Programs.Include(x => x.Radios)
where ProgramsIds.Contains(a.Id)
select a;
foreach (Program p in queryResult)
{
p.Radio = null;
p.Messages = new List<Message>();
}
我不喜欢这种解决方案,但我不知道哪一个更糟。
我想可能很多人都遇到了这个问题,您采取了哪种解决方案?
谢谢!!
编辑1:
JSON.Net正确处理对象/引用层次结构。 因此,只需使用JSON.Net序列化器(或ServiceStack.Text序列化器)从queryResult中获取json字符串,然后从服务方法返回Stream即可:
[OperationContract, WebGet(UriTemplate = "/GetJson", BodyStyle = WebMessageBodyStyle.Bare)] //ResponseFormat = WebMessageFormat.Json
Stream GetJSON();
....
return new MemoryStream(Encoding.UTF8.GetBytes(jsonString));
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.