본문 바로가기
카테고리 없음

[ASP.NET WebApi] Newtonsoft.Json을 활용한 응답 메세지 확장

by 그저그런보통사람 2014. 12. 10.

CLASS NAME: JsonContent


   public class JsonContent : HttpContent 

   {

        private readonly JToken _value;


        public JsonContent(JToken value)

        {

            _value = value;

            Headers.ContentType = new MediaTypeHeaderValue("application/json");

        }


        protected override Task SerializeToStreamAsync(Stream stream, TransportContext context)

        {

            var jw = new JsonTextWriter(new StreamWriter(stream))

            {

                Formatting = Formatting.Indented

            };

            _value.WriteTo(jw);

            jw.Flush();

            return Task.FromResult<object>(null);

        }


        protected override bool TryComputeLength(out long length)

        {

            length = -1;

            return false;

        }

    } 



CLASS NAME: JsonResponse 


    public class JsonResponse : HttpResponseMessage

    {

        public JsonResponse(object fromObject)

        {

            Content = new JsonContent(JObject.FromObject(fromObject));

        }

    }