如何将此json转换为flatter对象
我想将此json转换为对象。我的问题是子键“rates”。请帮助我如何将此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
{
"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对象时,你建议的链接没有帮助。改为使用。您希望速率键是地图中的键,还是希望它们是具有固定名称的属性?我认为地图中的键更好。您希望速率键是地图中的键,还是希望它们是具有固定名称的属性?我认为地图上的钥匙更好。