Есть ли у .NET 4 встроенный сериализатор / десериализатор JSON?
Приходит ли .NET 4 с любым classом, который сериализует / десериализует данные JSON?
-
Я знаю, что есть сторонние библиотеки, такие как JSON.NET , но я ищу что-то, встроенное прямо в .NET.
-
Я нашел Data Contracts на MSDN, но это для WCF, а не для Winforms или WPF.
- Сериализация нескольких свойств DateTime в одном classе с использованием разных форматов для каждого из них
- «Тип не ожидается», используя DataContractSerializer - но это просто class, не смешные вещи?
- EF 4.1 - Code First - Ошибка серийной ссылки JSON
- Как можно полиморфная десериализация Json String с использованием Java и библиотеки Jackson?
- C # JSON.NET - десериализация ответа, использующего необычную структуру данных
- Информация о сериализации типов кеша Json.NET?
- Как десериализовать JSON с двойными именами свойств в одном и том же объекте
- Невозможно сериализовать словарь с помощью сложного ключа с помощью Json.net
Вы можете использовать class DataContractJsonSerializer в любом месте, это всего лишь class .net и не ограничивается WCF. Подробнее о том, как использовать его здесь и здесь .
Существует class JavaScriptSerializer (хотя вам нужно будет ссылаться на сборку System.Web.Extensions
class отлично работает в приложениях WinForms / WPF). Также, даже если class DataContractJsonSerializer был разработан для WCF, он отлично работает в клиентских приложениях.
Используйте этот общий class для сериализации / десериализации JSON. Вы можете легко сериализовать сложную структуру данных следующим образом:
Dictionary>
в строку JSON, а затем сохранить ее в настройках приложения, иначе
public class JsonSerializer { public string Serialize(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 (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; } }