【问题标题】:Convert JS object into Dart classes将 JS 对象转换为 Dart 类
【发布时间】:2014-04-11 19:46:38
【问题描述】:

将对象从 Javascript 转换为 Dart 类对应部分的最佳模式是什么?

// car.dart
import 'part.dart';
class Car {
  String paintColor;
  List<Part> parts;
}

// part.dart
class Part {
  String name;
  String SKU;
}

// main.dart
import 'dart:html';
import 'dart:js';

import 'car.dart';

void main() {
  var body = document.querySelector('body');
  body.addEventListener('carSelect', loadCarHandler, false);
}

void loadCarHandler(event) {

  // this is the contents of a CustomEvent from outside dart
  // goal is to convert it into Car and Parts
  LinkedHashMap obj = event.detail;

  /*
  this is what the `obj` looks like inside the debugger
  obj = _LinkedHashMap
    :paintColor = 'Red'
    :parts = List[2]
      0 = _LinkedHashMap
        :name = 'Wheel'
        :SKU = 'Z123
      1 = _LinkedHashMap
        :name = 'Tire'
        :SKU = 'Z456'
  */

}

我应该在处理程序中进行转换吗?
允许构造函数获取 LinkedHashMap 并在那里转换它吗?
创建工厂?
Dart 中是否有内置的东西我不知道可以处理这个问题?

处理这个问题的首选飞镖方法是什么?

【问题讨论】:

    标签: dart dart-js-interop


    【解决方案1】:

    有几个库允许从 JSON 数据创建 Dart 对象。请参阅morphdartsonserialization

    您还可以通过添加这样的构造函数来避免镜像:

    class Car {
      String paintColor;
      List<Part> parts;
    
      Car();
      Car.fromJson(json)
          : paintColor = json['paintColor'],
            parts = json['parts'].map((e) => new Part.fromJson(e)).toList();
    }
    
    class Part {
      String name;
      String SKU;
    
      Part();
      Part.fromJson(json)
          : name = json['name'],
            SKU = json['SKU'];
    }
    

    【讨论】:

      猜你喜欢
      • 2019-12-05
      • 1970-01-01
      • 2014-11-30
      • 2019-12-11
      • 1970-01-01
      • 1970-01-01
      • 2019-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多