如何在 Dart 中访问复杂 JSON 对象中的数据?

How to access data inside a complex JSON object in Dart?

我在我的 Flutter 应用程序中使用 WebSocket 与服务器通信。假设我通过 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 中的内容?

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

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

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, ...

,您也可以递归检查列表或映射值