The answer by Vivek is unfortunately incorrect.
You can use serialization of private members if you use
Data Contract. You need to use System.Runtime.Serialization.Json.DataContractJsonSerializer, see
http://msdn.microsoft.com/en-us/library/system.runtime.serialization.json.datacontractjsonserializer.aspx[
^].
To get the idea, read this:
http://msdn.microsoft.com/en-us/library/ms733127.aspx[
^].
When you use Data Contract, the meta-data is defined not just by access specifier, but by special attributes such as [DataMember]. Data Contract is much more non-intrusive and beneficial over regular "legacy" serialization.
Please see also my past answer where I advocate Data Contract approach:
How can I utilize XML File streamwriter and reader in my form application?[
^],
Creating a property files...[
^].
—SA