Доступ к переменным-значениям из сложных списков вложенных объектов карты в Flutter - PullRequest
0 голосов
/ 20 февраля 2020

Я получаю ответ от серверного вызова, который я декодировал из JSON в список

Теперь к любому из значений списка 1, к которому я могу получить доступ, никаких проблем. Однако некоторые значений, которые я получаю, являются сложными, вместо простого типа данных, такого как String или int, это объект Map с вложенными переменными внутри.

Как мне получить к ним доступ?

Я не могу создать класс для анализа объектов Map, потому что они могут быть разных типов, и у меня нет возможности понять, в чем они состоят вперед.

Примеры ответа сервера, который я мог бы получить:

[{
  info1: something,
  info2: something else,
  info3: something something else,
  info4: [{
    object1: data,
    object2: data2,
    object3: data3
  }],
  info5: something something something else,
}]

В то же время я не могу заранее знать, получу ли я ответ на любая заданная точка, которая будет содержать такой объект карты, или какой он будет. Итак, как мне получить доступ к этим переменным? Прямо сейчас, если я наберу

print(list[0][info4]);

, я получу

[{object1: data, object2: data2, object3: data3}]

Оттуда, что мне нужно для этого сделать, это получить данные отдельной переменной, например, для object1 внутри info4

data

Итак, у меня есть данные, но как получить индивидуальный индекс, как мне получить доступ к данным внутри этого объекта? Какие обозначения я использую? Все, что я пробовал, либо возвращает ноль, либо вводит ошибки.

Кроме того, строка кода, которую я использую для декодирования ответа сервера, выглядит следующим образом.

List<dynamic> data2 = jsonDecode(response.body);

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

1 Ответ

0 голосов
/ 20 февраля 2020

Aha! Удалось это выяснить. Это на самом деле из-за скобок и типов скобок.

По сути, [скобка обозначает Список, тогда как {скобка обозначает Карту. Я не понимал, как это происходит, поэтому используемые мной обозначения сбивают с толку.

Теперь, когда я понимаю, что запись работает.

Итак, в приведенном выше примере метод, который я бы использовал использовать для получения доступа к объекту data1: data, результат будет следующим:

 print(info[0][info4][0][object1]);

Таким образом, по сути, из-за скобок [] он запрашивает целочисленный регистр для идентификации данного объекта, тогда как {} скобки запрашивают строковый регистр для идентификации объекта. Как только я понял это, все остальное пришло автоматически, и я смог разрешить анализ данных по мере необходимости.

Спасибо за ваши проницательные комментарии!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...