从 Flutter 中的嵌套映射对象的复杂列表访问变量值

Accessing Variable-Values from Complex Lists of Nested Map Objects in Flutter

我正在接收来自服务器调用的响应,我已将其从 JSON 解码为列表

现在我可以访问任何 1 级列表值,没有问题。但是,一些 我收到的值很复杂,而不是像 String 或 int 这样的简单数据类型,它是一个 Map 对象,内部有嵌套变量。

我如何访问这些?

我无法创建一个 class 来将 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 inside info4

data

所以我数据,但是在获得单独的索引之后,我如何访问该对象中的数据?我使用什么符号?我尝试过的所有内容要么 returns 无效,要么输入错误。

此外,我用来解码服务器响应的代码行如下。

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

因此,数据当前采用 List 格式,如果我需要使用其他行将其解码为不同的格式或其他格式,这可能会让您了解我从哪里开始。

啊哈!设法弄清楚了。其实是因为括号,和括号类型。

实际上,[括号表示一个List,而{括号表示一个Map。我不明白这是怎么回事,所以我使用的符号很混乱。

现在我明白了,符号有效。

所以在上面的例子中,我用来访问 object1: 数据结果的方法如下。

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

所以本质上,由于 [] 括号,它要求整数大小写来标识给定对象,而 {} 括号要求字符串大小写来标识给定对象。一旦我明白了这一点,剩下的就自动来了,我能够根据需要解决数据的解析。

感谢您的富有洞察力的评论!