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<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){

   //

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值