如何在 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
, ...
,您也可以递归检查列表或映射值
我在我的 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
, ...