无论如何,我想出了一种手动使用其他序列化器的方法,它似乎更高效,更快捷,因为它不会通过Microsoft的序列化器,尽管从代码角度来看,它有点麻烦。
- 在接口和实现它们的类中,将所有返回类型设置为“ System.ServiceModel.Channels.Message”。
[OperationContract] [WebGet(BodyStyle = WebMessageBodyStyle.Bare, ResponseFormat = WebMessageFormat.Json)] System.ServiceModel.Channels.Message GetData();
- 创建一个扩展方法,以便您可以使用JSON.NET序列化器(或您要使用的任何一种)轻松地从对象中构建内存流。
public static System.ServiceModel.Channels.Message GetJsonStream(this object obj) { //Serialize JSON.NET string jsonSerialized = JsonConvert.SerializeObject(obj); //Create memory stream MemoryStream memoryStream = new MemoryStream(new UTF8Encoding().GetBytes(jsonSerialized)); //Set position to 0 memoryStream.Position = 0; //return Message return WebOperationContext.Current.CreateStreamResponse(memoryStream, "application/json"); }
- 在方法的主体中,将直接序列化的对象返回到流中
return yourObject.GetJsonStream();
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)