我们如何在 Flutter 中从 JSON 对象中获取特定数据?

Posted

技术标签:

【中文标题】我们如何在 Flutter 中从 JSON 对象中获取特定数据?【英文标题】:How can we get specific data from JSON object in flutter? 【发布时间】:2021-10-17 08:12:20 【问题描述】:

我正在尝试从以下 JSON 响应中获取用户 ID:

    "status": "200",
    "msg": "Login Success !!",
    "userdata": 
        "id": 9,
        "name": "Zulqarnain",
        "gender": "male",
        "dob": "1999-10-10",
        "email": "zulqarnain@gmail.com",
        
    

我将尝试通过在flutter中编写以下代码来获得它:

Map<String, dynamic> map = json.decode(response.body);
   List<dynamic> data = map["userdata"];
   print(data[0]["id"]);

但它给了我错误Unhandled Exception: type '_InternalLinkedHashMap' is not a subtype of type 'List',我该如何解决这个问题。

【问题讨论】:

您是从 JSON 中获取单个用户还是多个用户?你能以更结构化的方式添加 JSON 响应吗? 【参考方案1】:

改变

List&lt;dynamic&gt;

Map&lt;String,dynamic&gt;

如果你有像 ["foo", "bar", "baz"] 这样的 JSON,你会得到一个 List,但是如果你有像 "foo": 1, "bar": 2, "baz": 3 这样的 JSON 你得到一个 Map

【讨论】:

我也在我的代码中写了这一行,请在我编辑后再次查看问题。 试试这个 print(map["userdata"][0]["id"]);或 print(map["userdata"]["id"]);如果只有一个用户。可能有帮助。【参考方案2】:

根据错误,这是因为 map["userdata"] 中的内容是 Map 并且您正试图将其分配给 List。

要解决这个问题,您可以将数据变量的类型设置为 Map 并且,当尝试获取数据变量的 id 时,您只需使用 data["id"]。 [0] 部分不是必需的,因为您没有尝试访问列表。

Map<String, dynamic> data = map["userdata"];
print(data["id"]);

【讨论】:

以上是关于我们如何在 Flutter 中从 JSON 对象中获取特定数据?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Flutter 中从 API 获取 JSON 数据

在 Flutter/Dart 中从 JSON 数组中提取数据

如何在flutter中从API创建多个复选框

在 Flutter 和 Dart 中从 JSON 解析双精度值

在 Flutter 中从 JSON 创建一个列表

如何在 dart 的 Future 函数中从 JSON 创建一个类对象?