updated solution to use JSON.NET instead of Data Contract Serialization