Dart中json解析过程中同一字段返回不同的类型怎么解析

下面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 json) {
    return Data(
        code: json['code'] as int,
        data: json['data'] is String
            ? json['data'] as String
            : user.fromJson(json['data'] as Map));
  }

//序列化
  Map toJson() {
    return {'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){

   //

}

你可能感兴趣的:(Dart中json解析过程中同一字段返回不同的类型怎么解析)