如何将此json转换为flatter对象

如何将此json转换为flatter对象,json,dart,flutter,Json,Dart,Flutter,我想将此json转换为对象。我的问题是子键“rates”。请帮助我 { "info": "Exchange Rates", "timestamp": "1558080000", "rates": { "USD": "1,536.7", "VND": "6.5693", "PHP": "29.184", "KRW": "128.60", "HKD": "195.77", "BRL": "379.62", "RSD": "14.55

我想将此json转换为对象。我的问题是子键“rates”。请帮助我

{
  "info": "Exchange Rates",
  "timestamp": "1558080000",
  "rates": {
    "USD": "1,536.7",
    "VND": "6.5693",
    "PHP": "29.184",
    "KRW": "128.60",
    "HKD": "195.77",
    "BRL": "379.62",
    "RSD": "14.557",
    "MYR": "367.94"
  }
}

您可以使用此网站生成与json映射匹配的类。

生成将生成一个具有属性信息、时间戳和速率的高级类,以及一个具有属性的嵌入式类速率(USD、VND等)。请参阅下面的代码:

class ExchangeRate {
  String info;
  String timestamp;
  Rates rates;

  ExchangeRate({this.info, this.timestamp, this.rates});

  ExchangeRate.fromJson(Map<String, dynamic> json) {
    info = json['info'];
    timestamp = json['timestamp'];
    rates = json['rates'] != null ? new Rates.fromJson(json['rates']) : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['info'] = this.info;
    data['timestamp'] = this.timestamp;
    if (this.rates != null) {
      data['rates'] = this.rates.toJson();
    }
    return data;
  }
}

class Rates {
  String uSD;
  String vND;
  String pHP;
  String kRW;
  String hKD;
  String bRL;
  String rSD;
  String mYR;

  Rates(
      {this.uSD,
      this.vND,
      this.pHP,
      this.kRW,
      this.hKD,
      this.bRL,
      this.rSD,
      this.mYR});

  Rates.fromJson(Map<String, dynamic> json) {
    uSD = json['USD'];
    vND = json['VND'];
    pHP = json['PHP'];
    kRW = json['KRW'];
    hKD = json['HKD'];
    bRL = json['BRL'];
    rSD = json['RSD'];
    mYR = json['MYR'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['USD'] = this.uSD;
    data['VND'] = this.vND;
    data['PHP'] = this.pHP;
    data['KRW'] = this.kRW;
    data['HKD'] = this.hKD;
    data['BRL'] = this.bRL;
    data['RSD'] = this.rSD;
    data['MYR'] = this.mYR;
    return data;
  }
}
类交换率{
字符串信息;
字符串时间戳;
差饷;
ExchangeRate({this.info,this.timestamp,this.rates});
fromJson(映射json){
info=json['info'];
timestamp=json['timestamp'];
rates=json['rates']!=null?新速率。fromJson(json['rates']):null;
}
映射到JSON(){
最终地图数据=新地图();
数据['info']=this.info;
数据['timestamp']=此.timestamp;
if(this.rates!=null){
data['rates']=this.rates.toJson();
}
返回数据;
}
}
班费{
美元;
字符串vND;
字符串pHP;
弦韩元;
字符串hKD;
字符串bRL;
字符串rSD;
字符串mYR;
费率(
{this.uSD,
这个.vND,,
this.pHP,
这是韩国,
本网站,
这个.bRL,
本署,
这是{mYR});
Rates.fromJson(映射json){
uSD=json['uSD'];
vND=json['vND'];
pHP=json['pHP'];
kRW=json['kRW'];
hKD=json['hKD'];
bRL=json['bRL'];
rSD=json['rSD'];
mYR=json['mYR'];
}
映射到JSON(){
最终地图数据=新地图();
数据['USD']=本美元;
数据['VND']=this.VND;
data['PHP']=this.PHP;
数据['KRW']=this.KRW;
数据['HKD']=this.HKD;
数据['BRL']=this.BRL;
数据['RSD']=this.RSD;
数据['MYR']=this.MYR;
返回数据;
}
}
然后,可以使用构造函数fromJson()构造对象

Map json={“info”:“汇率”,“时间戳”:“1558080000”,“汇率”:{“美元”:“1536.7”,“越南盾”:“6.5693”,“菲律宾盾”:“29.184”,“韩元”:“128.60”,“港元”:“195.77”,“巴西雷亚尔”:“379.62”,“RSD”:“14.557”,“马来西亚雷亚尔”:“367.94”};
var exRate=new-ExchangeRate.fromJson(json);

您可以使用此网站生成与json映射匹配的类。

生成将生成一个具有属性信息、时间戳和速率的高级类,以及一个具有属性的嵌入式类速率(USD、VND等)。请参阅下面的代码:

class ExchangeRate {
  String info;
  String timestamp;
  Rates rates;

  ExchangeRate({this.info, this.timestamp, this.rates});

  ExchangeRate.fromJson(Map<String, dynamic> json) {
    info = json['info'];
    timestamp = json['timestamp'];
    rates = json['rates'] != null ? new Rates.fromJson(json['rates']) : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['info'] = this.info;
    data['timestamp'] = this.timestamp;
    if (this.rates != null) {
      data['rates'] = this.rates.toJson();
    }
    return data;
  }
}

class Rates {
  String uSD;
  String vND;
  String pHP;
  String kRW;
  String hKD;
  String bRL;
  String rSD;
  String mYR;

  Rates(
      {this.uSD,
      this.vND,
      this.pHP,
      this.kRW,
      this.hKD,
      this.bRL,
      this.rSD,
      this.mYR});

  Rates.fromJson(Map<String, dynamic> json) {
    uSD = json['USD'];
    vND = json['VND'];
    pHP = json['PHP'];
    kRW = json['KRW'];
    hKD = json['HKD'];
    bRL = json['BRL'];
    rSD = json['RSD'];
    mYR = json['MYR'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    data['USD'] = this.uSD;
    data['VND'] = this.vND;
    data['PHP'] = this.pHP;
    data['KRW'] = this.kRW;
    data['HKD'] = this.hKD;
    data['BRL'] = this.bRL;
    data['RSD'] = this.rSD;
    data['MYR'] = this.mYR;
    return data;
  }
}
类交换率{
字符串信息;
字符串时间戳;
差饷;
ExchangeRate({this.info,this.timestamp,this.rates});
fromJson(映射json){
info=json['info'];
timestamp=json['timestamp'];
rates=json['rates']!=null?新速率。fromJson(json['rates']):null;
}
映射到JSON(){
最终地图数据=新地图();
数据['info']=this.info;
数据['timestamp']=此.timestamp;
if(this.rates!=null){
data['rates']=this.rates.toJson();
}
返回数据;
}
}
班费{
美元;
字符串vND;
字符串pHP;
弦韩元;
字符串hKD;
字符串bRL;
字符串rSD;
字符串mYR;
费率(
{this.uSD,
这个.vND,,
this.pHP,
这是韩国,
本网站,
这个.bRL,
本署,
这是{mYR});
Rates.fromJson(映射json){
uSD=json['uSD'];
vND=json['vND'];
pHP=json['pHP'];
kRW=json['kRW'];
hKD=json['hKD'];
bRL=json['bRL'];
rSD=json['rSD'];
mYR=json['mYR'];
}
映射到JSON(){
最终地图数据=新地图();
数据['USD']=本美元;
数据['VND']=this.VND;
data['PHP']=this.PHP;
数据['KRW']=this.KRW;
数据['HKD']=this.HKD;
数据['BRL']=this.BRL;
数据['RSD']=this.RSD;
数据['MYR']=this.MYR;
返回数据;
}
}
然后,可以使用构造函数fromJson()构造对象

Map json={“info”:“汇率”,“时间戳”:“1558080000”,“汇率”:{“美元”:“1536.7”,“越南盾”:“6.5693”,“菲律宾盾”:“29.184”,“韩元”:“128.60”,“港元”:“195.77”,“巴西雷亚尔”:“379.62”,“RSD”:“14.557”,“马来西亚雷亚尔”:“367.94”};
var exRate=new-ExchangeRate.fromJson(json);

在json包含高度嵌套对象的情况下,您建议的链接没有帮助。当你有一个高度嵌套的json对象时,你建议的链接没有帮助。改为使用。您希望速率键是地图中的键,还是希望它们是具有固定名称的属性?我认为地图中的键更好。您希望速率键是地图中的键,还是希望它们是具有固定名称的属性?我认为地图上的钥匙更好。