Using System.Runtime.Serialization.Json
[DataContract]
[Serializable]
public class SuperObj
{
[DataMember]
public string Foo { get; set; }
[DataMember]
public string Bar { get; set; }
[DataMember]
public int Baz { get; set; }
[DataMember]
public DateTime Qux { get; set; }
}
Can be serialized to a string using
var serializer = new DataContractJsonSerializer(typeof(SuperObj));
using (var stream = new MemoryStream())
{
serializer.WriteObject(stream, obj);
var jsonString = Encoding.UTF8.GetString(stream.ToArray());
Console.WriteLine(jsonString);
}
That string can be deserialized back into an object
var serializer = new DataContractJsonSerializer(typeof(SuperObj));
using (var stream = new MemoryStream(Encoding.UTF8.GetBytes(jsonString)))
{
var obj2 = (SuperObj)serializer.ReadObject(stream);
Console.WriteLine("SuperObj");
Console.WriteLine(obj2.Foo);
Console.WriteLine(obj2.Bar);
Console.WriteLine(obj2.Baz);
Console.WriteLine(obj2.Qux);
}
Like others have said though, the third party libraries tend to be better (I've used ServiceStack.Text and Json.Net)