Does .NET 4 have a built-in JSON serializer/deserializer?
Solution 1:
You can use the DataContractJsonSerializer class anywhere you want, it is just a .net class and is not limited to WCF. More info on how to use it here and here.
Solution 2:
There's the JavaScriptSerializer class (although you will need to reference the System.Web.Extensions
assembly the class works perfectly fine in WinForms/WPF applications). Also even if the DataContractJsonSerializer class was designed for WCF it works fine in client applications.
Solution 3:
Use this generic class in order to serialize / deserialize JSON. You can easy serialize complex data structure like this:
Dictionary<string, Tuple<int, int[], bool, string>>
to JSON string and then to save it in application setting or else
public class JsonSerializer
{
public string Serialize<T>(T aObject) where T : new()
{
T serializedObj = new T();
MemoryStream ms = new MemoryStream();
DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(T));
ser.WriteObject(ms, aObject);
byte[] json = ms.ToArray();
ms.Close();
return Encoding.UTF8.GetString(json, 0, json.Length);
}
public T Deserialize<T>(string aJSON) where T : new()
{
T deserializedObj = new T();
MemoryStream ms = new MemoryStream(Encoding.UTF8.GetBytes(aJSON));
DataContractJsonSerializer ser = new DataContractJsonSerializer(aJSON.GetType());
deserializedObj = (T)ser.ReadObject(ms);
ms.Close();
return deserializedObj;
}
}