Как искать значения в большом файле JSON в Dart - PullRequest
0 голосов
/ 04 января 2019

У меня большой JSON-файл со многими объектами со многими свойствами. Упрощенная структура выглядит так:

"allGadgets": [
      {
        "Model Code": "nokia1",
        "Top Category": "Mobile Phones",
        "Category": "non-iPhone",
        "Brand": "Nokia",
        "Device": "1",

        "Price": "£ 11"
      },
      {
        "Model Code": "nokia2",
        "Top Category": "Mobile Phones",
        "Category": "non-iPhone",
        "Brand": "Nokia",
        "Device": "2",

        "Price": "£ 17",
      },
      {
        "Model Code": "nokia3",
        "Top Category": "Mobile Phones",
        "Category": "non-iPhone",
        "Brand": "Nokia",
        "Device": "3",

        "Price": "£ 10",

      }] ... plus a few hundreds more of different brands and models

Я извлекаю из этого списка карт json список строк для панели поиска, чтобы пользователь мог найти свое устройство. Строки состоят из двух значений из json, т. Е. "${item['Brand']} - ${item['Device']}"

Как только пользователь выбрал соответствующую модель из выпадающего списка поиска, мне нужно использовать это строковое значение, чтобы дать ему цену из файла json. Вопрос в том, как мне добиться этого в дротике / флаттере? Если бы это был html / css, я бы добавил дополнительное скрытое поле кода модели и / или самой цены, а затем просто сделал бы его видимым.

Тем не менее, во флаттере / дротике плагин для панели поиска, который я обнаружил, принимает только те строки, которые выбирает пользователь и которые затем необходимо использовать для поиска соответствующего значения цены в файле json.

Сложность поиска состоит в том, что мои строки теперь состоят из двух значений полей с пробелами и дефисом между ними, поэтому мне, вероятно, нужно преобразовать их обратно в то, что они были до преобразования строки, а затем использовать оба для поиск ... который звучит довольно запутанно ...

Любые мысли о том, как решить вышеуказанную задачу, приветствуются!

То, что я думаю, могло бы сильно помочь, это пример - поиск объекта с использованием String (сформированного из двух значений из объектов) в json со многими объектами. Пользователь представлен с подмножеством этих объектов, но видит только несколько полей из них. Затем пользователь эффективно выбирает запрос, используя показанную ему строку, основываясь на двух полях. Затем эта строка позволяет искать объект и находить другое значение (цену) в соответствующем объекте ...

1 Ответ

0 голосов
/ 04 января 2019

Расшифровав свой JSON, вы получаете List Map с. Создайте новую структуру данных, которая представляет собой Map из Map с (т.е. Map<String, Map<String, dynamic>>). Заполните новый Map, добавив каждого члена в List с ключом имени бренда / устройства. Теперь вы можете напрямую просматривать сведения об устройстве по этому составному имени.

List<Map<String, dynamic>> original;
Map<String, Map<String, dynamic>> data = {};

original.forEach((item) {
  String brandDeviceName = '${item['Brand']} - ${item['Device']}';
  data[brandDeviceName] = item;
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...