Поиск по всему JSON файлу

413
17 июля 2017, 13:38

Есть небольшой JSON файл (~400 строк), который имеет подобную структуру:

{
  "Items": [
    {
      "type": "Тип 1",
      "Ключ1": "Значение 1",
      "Ключ2": "Значение 2"
    },
    {
      "type": "Тип 2",
      "Ключ3": "Значение 3",
      "Ключ4": "Значение 4"
    }
  ]
}

Файл как видно разбит по разделам, где первое значение всегда type - данное значение указывает название категории. Также в каждой категории имеется значение (тут я обозначил как ключ) - оно уникально.

Вопрос, как мне совершить поиск по всему файлу имея только Ключ - получить его Значение и текущую "категорию", которая находится в type?

На данный момент я загружаю весь файл построчно и в получившемся массиве ищю строку, которая имеет нужный ключ. Далее я это значение десериализирую и вытаскиваю значение. Такой вариант работает довольно хорошо, но я не могу получить type, да и сам этот вариант выглядит как "костыль".

Для большей понятности пример:

Имеем к примеру "Ключ3" - делаем поиск - на выходе получаем "Значение 3" и "Тип 2".

Answer 1

С учетом вашей структуры JSON данных и при нежелании десериализовать в объектный вид, вашу задачу можно решить так, благо фреймворк Json.Net поддерживает Linq:

JObject json = JObject.Parse(jsonText);
var result = json["Items"]
    .Where(s => s["Ключ3"] != null)
    .Select(s => new
     {
         Value = s["Ключ3"].ToString(),
         Type = s["type"]?.ToString()
     }).ToList();
READ ALSO
Повторный запрос по индексу у модели при биндинге коллекции

Повторный запрос по индексу у модели при биндинге коллекции

Реализован биндинг ListView к Collection в результате в логах вижу что запрос к модели по индексу повторяется по два раза для каждого элемента выводимого...

244
Динамическое добавление линий wpf

Динамическое добавление линий wpf

Привет всем, суть вопроса такая: у меня есть некий объект который добавляется динамически, в котором есть некоторые объекты с событиями MouseEnter,...

270