Подтвердить что ты не робот

Есть ли у .NET 4 встроенный сериализатор/десериализатор JSON?

Включен ли .NET 4 с любым классом, который сериализует/десериализует данные JSON?

  • Я знаю, что есть сторонние библиотеки, такие как JSON.NET, но я ищу что-то построенное прямо. NET.

  • Я нашел Контракты данных в MSDN, но это для WCF, а не для Winforms или WPF.

4b9b3361

Ответ 1

Вы можете использовать DataContractJsonSerializer класс в любом месте, это просто класс .net и не ограничивается WCF. Подробнее о том, как его использовать здесь и здесь.

Ответ 2

Здесь класс JavaScriptSerializer (хотя вам нужно будет ссылаться на сборку System.Web.Extensions, класс отлично работает в приложениях WinForms/WPF). Также даже если класс DataContractJsonSerializer был разработан для WCF, он отлично работает в клиентских приложениях.

Ответ 3

Используйте этот общий класс для сериализации/десериализации 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;
    }
}