下面data字段不同情况下返回不同的内容:
{"code":-2002,"data":"版本號錯誤,請下載最新版本的app"}
{"code":0,"data":{"name":"张三","password":"123456"}}
把此字段定义为Object类型
import 'package:flutter_myapp/model/user.dart'; class Data { int code; Object data; Data({this.code, this.data}); //反序列化 factory Data.fromJson(Map<String, dynamic> json) { return Data( code: json['code'] as int, data: json['data'] is String ? json['data'] as String : user.fromJson(json['data'] as Map<String, dynamic>)); } //序列化 Map<String, dynamic> toJson() { return <String, dynamic>{'code': this.code, 'data': this.data}; } }
解析时根据code转换为相应类型
var hostData = Data.fromJson(json.decode("json字符串")); if (hostData.code == 0) { var data = hostData.data as user; }else{ var data = hostData.data as String; }
或者
if(hostData.data is user){
//
}else if(hostData.data is String){
//
}