我在JSON中暴露WCF REST服务并尝试从jQuery中使用它时遇到了一些问题 .
-
我采取的第一个和期望的方法与this非常相似 . 但是我遇到的问题是,使用IsReference = true注释返回JSON不行,但是如果我返回XML就可以了 .
-
第二种方法是返回XML并使用它在jQuery中播放 . 但由于jQuery喜欢JSON,我不喜欢这个选项 .
-
另一个人可能在this解决方案之后尝试使用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:
- 另一种解决方案是调用Controller / Action,该Controller负责调用服务 . 由于浏览器可以单独使用该服务,因此我也不需要这样做 .
1 回答
JSON.Net正确处理对象/引用层次结构 . 因此,只需使用JSON.Net序列化程序(或使用ServiceStack.Text序列化程序)从queryResult获取json字符串,并从服务方法返回Stream: