LINQ запрос к JSON

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; }
}
Класс Employee

Затем мы выбираем список сотрудников, используя источник 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.

Не забудьте подписаться на мой канал в ЯндексДзен, там бывают полезные записи, которые я не публикую тут!