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

时间:2018-03-19 18:49:00

标签: json websocket dart flutter

我使用WebSocket与Flutter应用中的服务器进行通信。让我们说我通过WebSocket接收了一个JSON对象:

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

在我阅读datas之前,我不知道action的内容是什么,即便如此,每次都不能保证相同。{1}}更改action / datas的一个示例是产品不存在时。

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

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

1 个答案:

答案 0 :(得分: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`, ...
}

如果StringServer,您也可以将其递归检查列表或地图值。