public string Serialize(object value, string accept, Stream destination) { //fast path if (accept == "application/json" || accept == null) { Json.Serialize(value, destination, false); return("application/json"); } if (accept == "application/json;minimal") { Json.Serialize(value, destination, true); return("application/json"); } #if !NETSTANDARD2_0 if (accept == "application/x-protobuf") { Protobuf.Serialize(value, destination); return("application/x-protobuf"); } if (accept == "application/xml") { Xml.Serialize(value, destination); return("application/xml"); } #endif if (accept.StartsWith("application/json", StringComparison.Ordinal)) { Json.Serialize(value, destination, false); return("application/json"); } //Slow path accept = (accept ?? "application/json").ToLowerInvariant(); if (accept.Contains("application/json")) { Json.Serialize(value, destination, false); return("application/json"); } #if !NETSTANDARD2_0 if (accept.Contains("application/xml")) { Xml.Serialize(value, destination); return("application/xml"); } if (accept.Contains("application/x-protobuf")) { Protobuf.Serialize(value, destination); return("application/x-protobuf"); } #endif Json.Serialize(value, destination, false); return("application/json"); }
private object Deserialize(Type type, XmlReader reader, StreamingContext context) { using (var dict = XmlDictionaryReader.CreateDictionaryReader(reader)) { var serializer = new DataContractSerializer(type); var result = serializer.ReadObject(dict, false, GenericResolver); if (context.Context == null) { return(result); } //TODO NO need for actual xml serializer now //implement recursive descent and provide context to all objects using (var cms = ChunkedMemoryStream.Create()) { #if NETSTANDARD2_0 try { Json.Serialize(result, cms, true); cms.Position = 0; return(Json.Deserialize(cms, type, context)); #else var ns = new NetDataContractSerializer(context); try { ns.Serialize(cms, result); cms.Position = 0; ns.Binder = GenericBinder; return(ns.Deserialize(cms)); #endif } catch (Exception ex) { TraceSource.TraceEvent(TraceEventType.Error, 5202, "{0}", ex); TraceSource.TraceEvent(TraceEventType.Verbose, 5202, "{0}", cms); throw; } } } }
public string Serialize(object value, string accept, Stream destination) { //fast path if (accept == "application/json") { Json.Serialize(value, destination, false); return("application/json"); } if (accept == "application/json;minimal") { Json.Serialize(value, destination, true); return("application/json"); } if (accept == "application/x-protobuf") { Protobuf.Serialize(value, destination); return("application/x-protobuf"); } if (accept == "application/xml") { Xml.Serialize(value, destination); return("application/xml"); } //Slow path accept = (accept ?? "application/json").ToLowerInvariant(); if (accept.Contains("application/xml")) { Xml.Serialize(value, destination); return("application/xml"); } if (accept.Contains("application/x-protobuf")) { Protobuf.Serialize(value, destination); return("application/x-protobuf"); } Json.Serialize(value, destination, false); return("application/json"); }