【问题标题】:How to access data inside a complex JSON object in Dart?如何在 Dart 中访问复杂 JSON 对象中的数据?
【发布时间】:2018-08-28 10:45:06
【问题描述】:

我使用 WebSocket 与 Flutter 应用程序中的服务器通信。假设我通过 WebSocket 收到一个 JSON 对象:

{
    "action": "getProduct",
    "cbackid": 1521474231306,
    "datas": {
        "product": {
            "Actif": 1,
            "AfficheQte": 0,
            "Article": "6"
        },
        "result": "success"
    },
    "deviceID": "4340a8fdc126bb59"
}

在我阅读action 之前,我不知道datas 的内容是什么,即使那样,也不能保证每次都一样。更改action/datas 的一个示例是产品不存在时。

我可以在Map<String, Object> 中解析它,但是,我如何访问Object 中的内容?

读取这些数据的正确方法是什么?

【问题讨论】:

    标签: json websocket dart flutter


    【解决方案1】:

    不确定问题是什么,但您可以检查值的类型,然后相应地继续

    if(json['action'] == 'getProduct') {
      var datas = json['datas'];
      if(datas is List) {
        var items = datas as List;
        for(var item in items) {
          print('list item: $item');
        }
      } else if (datas is Map) {
        var items = datas as Map;
        for(var key in items.keys) {
          print('map item: $key, ${items[key]}');
        }
      } else if(datas is String) {
        print('datas: $datas');
      } // ... similar for all other possible types like `int`, `double`, `bool`, ...
    }
    

    如果它们是String,您也可以递归检查列表或映射值,...

    【讨论】:

      猜你喜欢
      • 2021-01-21
      • 1970-01-01
      • 2017-12-29
      • 1970-01-01
      • 2018-09-09
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 2021-11-27
      相关资源
      最近更新 更多