Десериализация JSON в объект класса C# - это процесс преобразования JSON-строки в экземпляр класса, который имеет структуру, соответствующую содержимому JSON. В C# есть несколько способов выполнить десериализацию JSON.
1. Использование встроенного класса JavaScriptSerializer
:
using System.Web.Script.Serialization; string json = "{"name":"John", "age":30, "city":"New York"}"; // Создаем экземпляр JavaScriptSerializer JavaScriptSerializer serializer = new JavaScriptSerializer(); // Десериализуем JSON в объект var person = serializer.Deserialize<Person>(json); // Получаем доступ к свойствам объекта Console.WriteLine(person.name); // Выводит "John" Console.WriteLine(person.age); // Выводит 30 Console.WriteLine(person.city); // Выводит "New York"
Обратите внимание, что нам понадобится ссылка на сборку System.Web.Extensions
, чтобы использовать JavaScriptSerializer
. Однако, начиная с .NET Framework 3.5, эта сборка включается по умолчанию.
2. Использование библиотеки Newtonsoft.Json
(также известной как Json.NET):
using Newtonsoft.Json; string json = "{"name":"John", "age":30, "city":"New York"}"; // Десериализуем JSON в объект var person = JsonConvert.DeserializeObject<Person>(json); // Получаем доступ к свойствам объекта Console.WriteLine(person.name); // Выводит "John" Console.WriteLine(person.age); // Выводит 30 Console.WriteLine(person.city); // Выводит "New York"
Для использования Newtonsoft.Json
вам понадобится установить пакет NuGet Newtonsoft.Json
или добавить ссылку на сборку Newtonsoft.Json
.
3. Если в JSON-строке представлен сложный объект, содержащий вложенные объекты или массивы, вы можете создать соответствующую структуру классов в C#, которая отражает структуру JSON, и использовать один из вышеперечисленных методов для десериализации.
class Person { public string name { get; set; } public int age { get; set; } public string city { get; set; } }
В обоих примерах, JSON-строка {"name":"John", "age":30, "city":"New York"}
будет десериализована в объект Person
, и мы сможем получить доступ к его свойствам.
Обратите внимание, что в обоих методах десериализации, JSON-строка должна соответствовать структуре класса C#, иначе могут возникнуть ошибки.