BSON data

BSON is a bin­ary-en­coded seri­al­iz­a­tion of JSON-like doc­u­ments. BSON is designed to be lightweight, traversable, and efficient.

 

Download Newtonsoft.Json.dll. from codeplex

Add references

  • using Newtonsoft.Json;
  • using Newtonsoft.Json.Bson;

 

class Person
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public DateTime BD { get; set; }
}


private void BsonSerialization()
{
    Person pers = new Person()
                       { BD = DateTime.Now, FirstName = "myFN", LastName = "myLN" };
    MemoryStream myStream = new MemoryStream();
    JsonSerializer objSerialize = new JsonSerializer();
    BsonWriter writer = new BsonWriter(myStream);
    objSerialize.Serialize(writer, pers);
    MessageBox.Show(BitConverter.ToString(myStream.ToArray()));
    myStream.Seek(0, SeekOrigin.Begin);
    BsonReader reader = new BsonReader(myStream);
    Person deserializedPerson = objSerialize.Deserialize<Person>(reader); 
}

Now, On an ASP.NET MVC application,
Add this custom BSONResult

using Newtonsoft.Json;
using Newtonsoft.Json.Bson;
    public class CustomBSONResult : ActionResult
    {
        private object _myobj;

        public CustomBSONResult(object data)
        {
            this._myobj = data;
        }

        public override void ExecuteResult(ControllerContext context)
        {
            HttpContextBase httpContextBase = context.HttpContext;
            httpContextBase.Response.Buffer = true;
            httpContextBase.Response.Clear();
            httpContextBase.Response.ContentType = "application/bson";
            JsonSerializer serializer = new JsonSerializer();           
            BsonWriter bWriter = new BsonWriter(httpContextBase.Response.OutputStream);
            serializer.Serialize(bWriter, _myobj);
            httpContextBase.Response.Write(bWriter);
        }
    }

 

Create a Person Controller
    public class PersonController : Controller
    {

        public ActionResult Index()
        {
            return View();
        }
        public CustomBSONResult bdata()
        {
            Person pers = new Person() { BD = DateTime.Now, FirstName = "myFN", LastName = "myLN" };
            return new CustomBSONResult(pers);
        }
        public JsonResult JsonData()
        {
            Person pers = new Person() { BD = DateTime.Now, FirstName = "myFN", LastName = "myLN" };
            return Json(pers, JsonRequestBehavior.AllowGet);
        }
    }

now check the outputs
localhost:???/Person/jsondata
localhost:???/Person/bdata
Json data
{"FirstName":"myFN","LastName":"myLN","BD":"\/Date(1346118761805)\/"}

bson data
8   FirstName    myFN LastName    myLN  BD eäîj9   Newtonsoft.Json.Bson.BsonWriterv