LINQPad query to parse JSON DateTime string

JSON (JavaScript Object Notation) is a data transfer format widely adopted on the web because it’s lightweight compared to XML. I touched on the topic of JSON in an earlier post when I posted some extension methods for compressing/decompressing string.

If you are unfamiliar with the JSON format or how it’s supported in .Net then you should take a look at the MSDN articles in the references section to get you started.

With regards to DateTime values, they appear as JSON strings in the form of “\/Date(1276675934513+0100)\/” which is not easy to read when you’re debugging. In order to convert this JSON string back to a humanly readable form you can use this LINQPad to parse it, just replace the JSON string at the top:

var json = "\"\\/Date(1276675934513+0100)\\/\"";
json.Dump();
var serializer = new DataContractJsonSerializer(typeof(DateTime));
var memString = new MemoryStream(Encoding.ASCII.GetBytes(json));
var d = (DateTime) serializer.ReadObject(memString);
d.Dump();

If you’re not using LINQPad already then you should! Written by Joe Albahari (co-writer of the C# in a Nutshell books) it can be a huge time saver because you can use it as a code snippet editor in addition to being a Database query tool.

Reference:

JSON.org

An introduction to JSON in JavaScript and .Net

Stand-alone JSON serialization

JSON Formatter & Validator

JSON.Net Codeplex project

LINQPad