Ejemplo n.º 1
0
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            HttpResponseBase response = context.HttpContext.Response;

            // Incredibly, IE *still* doesn't know what JSON is, so we have to trick it to avoid prompting the user to save the returning JSON
            if (context.RequestContext.HttpContext.Request["ie"] != null && Convert.ToBoolean(context.RequestContext.HttpContext.Request["ie"]) == true)
            {
                response.ContentType = "text/html";
            }
            else
            {
                response.ContentType = "application/json";
            }

            if (Data != null)
            {
                // HACK: RavenDB uses an internalised version of JSON.Net 4.0.8, while Bowerbird references JSON.Net 4.5. When RavenDB returns a DESERIALISED v4.0.8 object
                // and then I try to SERIALISE it with v4.5, the output is rubbish. For some reason JArray types don't get serialised at all.
#if JS_COMBINE_MINIFY
                var formatting = Raven.Imports.Newtonsoft.Json.Formatting.None;
#else
                var formatting = Raven.Imports.Newtonsoft.Json.Formatting.Indented;
#endif
                var writer = new Raven.Imports.Newtonsoft.Json.JsonTextWriter(response.Output)
                {
                    Formatting = formatting
                };
                var serializer = new Raven.Imports.Newtonsoft.Json.JsonSerializer();
                serializer.Serialize(writer, Data);
                writer.Flush();

                //var writer = new Newtonsoft.Json.JsonTextWriter(response.Output) { Formatting = Newtonsoft.Json.Formatting.Indented };
                //var serializer = new Newtonsoft.Json.JsonSerializer();
                //serializer.Serialize(writer, Data);
                //writer.Flush();
            }
        }
Ejemplo n.º 2
0
        public override void ExecuteResult(ControllerContext context)
        {
            if (context == null)
            {
                throw new ArgumentNullException("context");
            }

            HttpResponseBase response = context.HttpContext.Response;

            // Incredibly, IE *still* doesn't know what JSON is, so we have to trick it to avoid prompting the user to save the returning JSON
            if (context.RequestContext.HttpContext.Request["ie"] != null && Convert.ToBoolean(context.RequestContext.HttpContext.Request["ie"]) == true)
            {
                response.ContentType = "text/html";
            }
            else
            {
                response.ContentType = "application/json";
            }

            if (Data != null)
            {
                // HACK: RavenDB uses an internalised version of JSON.Net 4.0.8, while Bowerbird references JSON.Net 4.5. When RavenDB returns a DESERIALISED v4.0.8 object
                // and then I try to SERIALISE it with v4.5, the output is rubbish. For some reason JArray types don't get serialised at all.
            #if JS_COMBINE_MINIFY
                var formatting = Raven.Imports.Newtonsoft.Json.Formatting.None;
            #else
                var formatting = Raven.Imports.Newtonsoft.Json.Formatting.Indented;
            #endif
                var writer = new Raven.Imports.Newtonsoft.Json.JsonTextWriter(response.Output) { Formatting = formatting };
                var serializer = new Raven.Imports.Newtonsoft.Json.JsonSerializer();
                serializer.Serialize(writer, Data);
                writer.Flush();

                //var writer = new Newtonsoft.Json.JsonTextWriter(response.Output) { Formatting = Newtonsoft.Json.Formatting.Indented };
                //var serializer = new Newtonsoft.Json.JsonSerializer();
                //serializer.Serialize(writer, Data);
                //writer.Flush();
            }
        }
Ejemplo n.º 3
0
 public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
 {
     if (reader.Value == null)
     {
         return(0);
     }
     if (reader.Value is long)
     {
         return((int)(long)reader.Value);
     }
     return((int)reader.Value);
 }
Ejemplo n.º 4
0
 public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
 {
     writer.WriteValue(value);
 }