Ответ 1
Вы можете использовать DataContractJsonSerializer класс в любом месте, это просто класс .net и не ограничивается WCF. Подробнее о том, как его использовать здесь и здесь.
Включен ли .NET 4 с любым классом, который сериализует/десериализует данные JSON?
Я знаю, что есть сторонние библиотеки, такие как JSON.NET, но я ищу что-то построенное прямо. NET.
Я нашел Контракты данных в MSDN, но это для WCF, а не для Winforms или WPF.
Вы можете использовать DataContractJsonSerializer класс в любом месте, это просто класс .net и не ограничивается WCF. Подробнее о том, как его использовать здесь и здесь.
Здесь класс JavaScriptSerializer (хотя вам нужно будет ссылаться на сборку System.Web.Extensions
, класс отлично работает в приложениях WinForms/WPF). Также даже если класс DataContractJsonSerializer был разработан для WCF, он отлично работает в клиентских приложениях.
Используйте этот общий класс для сериализации/десериализации JSON. Вы можете легко сериализовать сложную структуру данных следующим образом:
Dictionary<string, Tuple<int, int[], bool, string>>
в строку JSON, а затем сохранить его в настройках приложения или
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, serializedObj);
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;
}
}