LINQ используется для запросов к коллекциям в .NET. Существуют разные провайдеры LINQ для запросов к различным источникам данных. Например, если вы хотите запросить SQL, вы используете LINQ to SQL. При работе с JSON вы можете использовать LINQ to JSON. JSON не имеет провайдера LINQ, но имеет API, который позволяет работать с объектами JSON в C# . Он является частью инфраструктуры JSON.NET, которая обеспечивает поддержку JSON в .NET. Сегодня будем делать LINQ запросы к JSON файлу.
Итак, приступим.
1. Установка Netwonsoft.Json
Netwonsoft.Json можно установить с помощью диспетчера пакетов nuget, либо с помощью консоли диспетчера пакетов. При использовании менеджера пакетов nuget запустите его (кликнете правой кнопкой мыши на решении или проекте в Visual Studio и выберите “Управление пакетами Nuget для…). В поле поиска введите Netwonsoft.Json и установите этот пакет. Если вы используете консоль диспетчера пакетов, то устанавливайте его командой:
Install-Package Newtonsoft.Json
Далее импортируйте пространство имен Newtonsoft.Json указав его в директивах using:
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
2. Разбор строки JSON, используя метод Parse класса JObject.
Этот метод вернет объект, представляющий строку JSON
JObject.Parse («Строка JSON»)
3. Запрашиваем объект JSON, используя LINQ запрос
Для начала объявляем и декларируем класс Employee.
public class Employee
{
public int ID { get; set; }
public string Name { get; set; }
}
Затем мы выбираем список сотрудников, используя источник JSON в классе DBHelper следующим образом:
public static class DBHelper {
public static JObject GetEmployeesJSON()
{
JObject o = JObject.Parse(@"{ 'Organization': 'MyOrganization', 'Address':'Address', 'Employees': [ {'Name':'1'}, {'Name':'2'} ] }"); return o; }
}
Теперь вы можете получить список сотрудников так:
var employees= DBHelper.GetEmployeesJSON()["Employees"].Select(emp =>emp).ToList();
LINQ to JSON предоставляет следующие полезные классы
- JObject
- JArray
- JProperty
Метод children () возвращает потомков в виде IEnumerable <JToken>. Может использоваться с JObject или JArray.
Не забудьте зайти на блог, там бывают полезные записи, которые я не публикую тут!
А чтобы быть в курсе последних моих постов, подписывайтесь на мой канал в Telegram.