Есть ли в .NET 4 встроенный сериализатор / десериализатор JSON? - PullRequest
59 голосов
/ 18 июля 2010

Имеется ли в .NET 4 какой-либо класс, который сериализует / десериализует данные JSON?

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

  • Я нашел Контракты на данные на MSDN, но он предназначен для WCF, а не для Winforms или WPF.

Ответы [ 4 ]

39 голосов
/ 18 июля 2010

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

27 голосов
/ 18 июля 2010

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

3 голосов
/ 24 ноября 2017

Используйте этот универсальный класс для сериализации / десериализации 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, 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;
    }
}
0 голосов
/ 01 ноября 2018

.NET4 имеет встроенный класс JSON, такой как DataContractJsonSerializer, но он очень слабый и не поддерживает многомерный массив.Я предлагаю вам использовать JSON.Net

...