繁体   English   中英

JSON和jQuery中的WCF Rest Service

[英]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:

  • 另一个解决方案是对负责对服务进行调用的Controller / Action进行调用。 我也不喜欢这种方法,因为它是不必要的,因为浏览器可以自行运行该服务。

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM