Flutter JSON转Dart模型插件json_to_dart_model_plus的使用

Flutter JSON转Dart模型插件json_to_dart_model_plus的使用

在Flutter项目中,处理JSON数据是一个常见的任务。为了简化这一过程,可以使用json_to_dart_model_plus插件来生成Dart模型类。本文将详细介绍如何使用该插件。

特性

  • 自动将snake_case JSON键转换为camelCase Dart字段名。
  • 支持intdoubleStringbooldynamic类型。
  • 可以处理null安全的字段(使用?)。
  • 在序列化时可以选择性地包含字段,如果字段为null则不包含。

如何工作

  1. 字段类型:生成器会自动推断字段类型(例如,intString)。
  2. 空安全:所有字段都是可选的(例如,int?String?),以便处理不完整的或可能为null的JSON数据。
  3. fromJson方法:此方法将JSON对象转换为Dart模型,并对每个字段进行空检查。
  4. toJson方法:此方法将Dart模型转换回JSON,排除空字段。

示例

假设有以下输入JSON:

{
  "key1": "value1",
  "key2": 123,
  "key3": null,
  "key4": true,
  "key5": 0.3
}

下面是对应的Dart代码示例:

import 'dart:convert';

void main() {
  // 定义模型名称
  String modelName = 'MyModel';

  // 定义JSON字符串
  String jsonString = '''
  {
    "key1": "value1",
    "key2": 123,
    "key3": null,
    "key4": true,
    "key5": 0.3
  }
  ''';

  // 解析JSON字符串
  Map<String, dynamic> jsonInput = jsonDecode(jsonString);

  // 使用json_to_dart_model_plus生成模型代码
  String modelCode = JsonToDartModel(modelName: modelName, jsonInput: jsonInput).generateModel();

  // 输出生成的模型代码
  print(modelCode);
}

输出将是:

class MyModel {
  String? key1;
  int? key2;
  dynamic key3;
  bool? key4;
  double? key5;

  MyModel({
    this.key1,
    this.key2,
    this.key3,
    this.key4,
    this.key5,
  });

  factory MyModel.fromJson(Map<String, dynamic>? json) => MyModel(
        key1: json?['key1'],
        key2: json?['key2'],
        key3: json?['key3'],
        key4: json?['key4'],
        key5: json?['key5'],
      );

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = new Map<String, dynamic>();
    if (this.key1 != null) {
      data['key1'] = this.key1;
    }
    if (this.key2 != null) {
      data['key2'] = this.key2;
    }
    if (this.key3 != null) {
      data['key3'] = this.key3;
    }
    if (this.key4 != null) {
      data['key4'] = this.key4;
    }
    if (this.key5 != null) {
      data['key5'] = this.key5;
    }
    return {"MyModel": data};
  }

  [@override](/user/override)
  String toString() {
    return toJson().toString();
  }
}

更多关于Flutter JSON转Dart模型插件json_to_dart_model_plus的使用的实战教程也可以访问 https://www.itying.com/category-92-b0.html

1 回复

更多关于Flutter JSON转Dart模型插件json_to_dart_model_plus的使用的实战系列教程也可以访问 https://www.itying.com/category-92-b0.html


json_to_dart_model_plus 是一个用于将 JSON 数据自动转换为 Dart 模型类的 Flutter 插件。它可以帮助开发者快速生成 Dart 模型类,从而减少手动编写模型类的工作量。以下是使用 json_to_dart_model_plus 的基本步骤:

1. 安装插件

首先,你需要在你的 Flutter 项目中安装 json_to_dart_model_plus 插件。你可以通过以下命令来安装:

flutter pub add json_to_dart_model_plus

或者,你可以直接在 pubspec.yaml 文件中添加依赖:

dependencies:
  json_to_dart_model_plus: ^1.0.0

然后运行 flutter pub get 来安装依赖。

2. 使用插件生成 Dart 模型类

安装完插件后,你可以通过以下步骤来使用它生成 Dart 模型类:

2.1 准备 JSON 数据

首先,准备一个 JSON 数据文件或字符串。例如:

{
  "name": "John Doe",
  "age": 30,
  "email": "john.doe@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA",
    "zip": "12345"
  }
}

2.2 生成 Dart 模型类

在终端中运行以下命令来生成 Dart 模型类:

flutter pub run json_to_dart_model_plus --input=your_json_file.json --output=lib/models

其中:

  • --input 参数指定 JSON 文件的路径。
  • --output 参数指定生成的 Dart 模型类的输出目录。

例如:

flutter pub run json_to_dart_model_plus --input=assets/user.json --output=lib/models

2.3 查看生成的 Dart 模型类

生成的 Dart 模型类将会保存在指定的输出目录中。例如,生成的模型类可能如下:

class User {
  String? name;
  int? age;
  String? email;
  Address? address;

  User({this.name, this.age, this.email, this.address});

  User.fromJson(Map<String, dynamic> json) {
    name = json['name'];
    age = json['age'];
    email = json['email'];
    address = json['address'] != null ? Address.fromJson(json['address']) : null;
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = <String, dynamic>{};
    data['name'] = name;
    data['age'] = age;
    data['email'] = email;
    if (address != null) {
      data['address'] = address!.toJson();
    }
    return data;
  }
}

class Address {
  String? street;
  String? city;
  String? state;
  String? zip;

  Address({this.street, this.city, this.state, this.zip});

  Address.fromJson(Map<String, dynamic> json) {
    street = json['street'];
    city = json['city'];
    state = json['state'];
    zip = json['zip'];
  }

  Map<String, dynamic> toJson() {
    final Map<String, dynamic> data = <String, dynamic>{};
    data['street'] = street;
    data['city'] = city;
    data['state'] = state;
    data['zip'] = zip;
    return data;
  }
}

3. 使用生成的 Dart 模型类

你可以在你的 Flutter 项目中使用生成的 Dart 模型类来解析 JSON 数据。例如:

import 'models/user.dart'; // 导入生成的模型类

void main() {
  String jsonString = '''
  {
    "name": "John Doe",
    "age": 30,
    "email": "john.doe@example.com",
    "address": {
      "street": "123 Main St",
      "city": "Anytown",
      "state": "CA",
      "zip": "12345"
    }
  }
  ''';

  Map<String, dynamic> jsonMap = jsonDecode(jsonString);
  User user = User.fromJson(jsonMap);

  print(user.name); // 输出: John Doe
  print(user.address?.city); // 输出: Anytown
}
回到顶部