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...