Skip to content

Instantly share code, notes, and snippets.

@ajtowf
Last active December 16, 2015 20:00
Show Gist options
  • Save ajtowf/5489637 to your computer and use it in GitHub Desktop.
Save ajtowf/5489637 to your computer and use it in GitHub Desktop.
WebApi Wrapped JavaScriptSerializer Formatter
public class TypedJsonMediaTypeFormatter : MediaTypeFormatter
{
private static readonly JavaScriptSerializer Serializer = new JavaScriptSerializer();
public TypedJsonMediaTypeFormatter(MediaTypeHeaderValue mediaType)
{
SupportedMediaTypes.Clear();
SupportedMediaTypes.Add(mediaType);
}
...
public override Task<object> ReadFromStreamAsync(Type type, Stream readStream, System.Net.Http.HttpContent content, IFormatterLogger formatterLogger)
{
var task = Task<object>.Factory.StartNew(() =>
{
var sr = new StreamReader(readStream);
var jreader = new JsonTextReader(sr);
object val = Serializer.Deserialize(jreader.Value.ToString(), type);
return val;
});
return task;
}
public override Task WriteToStreamAsync(Type type, object value, Stream writeStream, System.Net.Http.HttpContent content, System.Net.TransportContext transportContext)
{
var task = Task.Factory.StartNew(() =>
{
string json = Serializer.Serialize(value);
byte[] buf = System.Text.Encoding.Default.GetBytes(json);
writeStream.Write(buf, 0, buf.Length);
writeStream.Flush();
});
return task;
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment