json - 如何将此 json 转换为 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.557",
    "MYR": "367.94"
  }
}

最佳答案

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

这一代将产生一个具有属性信息、时间戳和汇率的高级类,以及一个具有属性(美元、越南盾、...)的嵌入式类利率。请看下面的代码:

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;
  }
}

然后,您可以使用构造函数 fromJson() 构造您的对象。

Map<String, dynamic> json = {"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"}};

var exRate = new ExchangeRate.fromJson(json);

关于json - 如何将此 json 转换为 Flutter 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56207999/

相关文章:

python - 如何将 Cisco IOS 输出解析为对象或 JSON

java - Apache CXF 2.4.6 到 2.5.3 升级

dart - 为什么我的 setState 方法无法更改我的容器背景颜色?

image - 我想为 flutter 上传图片添加带有 access_token 的 header

flutter - 如何混淆 Flutter 应用程序?

javascript - TOMCAT报告此错误: INFO: Character decoding failed

Php 不能使用对象 stdClass 作为数组

dart - 使用 SVG 作为容器的背景图像

json - Map<int, List<int>> 转换为可编码对象失败

java - Dart/Flutter UTF-16 编码