Flutter JSON转Model插件json2model的使用

发布于 1周前 作者 sinazl 来自 Flutter

Flutter JSON转Model插件json2model的使用

本库通过在代码中执行命令来生成与JSON字符串对应的模型对象。

使用

一个简单的使用示例:

import 'package:json2model/json2model.dart';

void main() {
  run(['--src=example/json', '--dst=example/lib/models']);
}

上述代码中的run函数接受一个参数列表,其中--src参数指定源JSON文件或目录的位置,--dst参数指定生成的模型文件的目标位置。

特性和问题

请在问题追踪器中提交功能请求和错误报告。

关于

联系邮箱:venshine.cn@gmail.com

许可证

本项目采用BSD 3-Clause 许可证


完整示例Demo

以下是一个完整的示例,展示了如何使用json2model插件将JSON数据转换为模型类。

首先,创建一个包含JSON数据的文件(例如example/json/user.json):

{
  "id": 1,
  "name": "John Doe",
  "email": "john.doe@example.com"
}

然后,在Dart代码中调用json2model插件来生成模型类:

// 导入json2model包
import 'package:json2model/json2model.dart';

void main() {
  // 运行json2model插件,指定源JSON文件路径和目标模型文件路径
  run(['--src=example/json', '--dst=example/lib/models']);
}

运行上述代码后,json2model会根据example/json目录下的JSON文件生成相应的模型类,并将其保存到example/lib/models目录下。例如,user.json会被转换成UserModel.dart文件,内容如下:

class User {
  int id;
  String name;
  String email;

  User({this.id, this.name, this.email});

  factory User.fromJson(Map<String, dynamic> json) {
    return User(
      id: json['id'],
      name: json['name'],
      email: json['email'],
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'id': id,
      'name': name,
      'email': email,
    };
  }
}

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

1 回复

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


当然,我可以为你提供一个关于如何使用 json2model 插件将 JSON 数据转换为 Flutter Model 类的示例。json2model 是一个便捷的 Flutter 插件,用于根据 JSON 数据自动生成 Dart Model 类。虽然 json2model 插件本身是一个 Visual Studio Code (VSCode) 扩展,但我会展示如何使用它以及生成的代码示例。

使用 json2model 插件步骤

  1. 安装插件

    • 打开 VSCode。
    • 进入扩展市场(左侧边栏的方块图标)。
    • 搜索 json2dartFlutter JSON to Dart Model 并安装。
  2. 准备 JSON 数据: 假设你有以下 JSON 数据:

    {
      "name": "John Doe",
      "age": 30,
      "email": "john.doe@example.com",
      "address": {
        "street": "123 Main St",
        "city": "Anytown",
        "zipcode": "12345"
      }
    }
    
  3. 生成 Dart Model

    • 在 VSCode 中新建一个 Dart 文件,比如 user_model.dart
    • 将上述 JSON 数据复制并粘贴到 Dart 文件中。
    • 右键点击 JSON 数据,选择 Convert JSON to Dart Model(或者类似的选项,取决于你安装的插件)。

    插件将自动生成如下 Dart Model 类:

    class UserModel {
      String? name;
      int? age;
      String? email;
      Address? address;
    
      UserModel({this.name, this.age, this.email, this.address});
    
      UserModel.fromJson(Map<String, dynamic> json) {
        name = json['name'];
        age = json['age'];
        email = json['email'];
        address = json['address'] != null ? new Address.fromJson(json['address']!) : null;
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data['name'] = this.name;
        data['age'] = this.age;
        data['email'] = this.email;
        if (this.address != null) {
          data['address'] = this.address!.toJson();
        }
        return data;
      }
    }
    
    class Address {
      String? street;
      String? city;
      String? zipcode;
    
      Address({this.street, this.city, this.zipcode});
    
      Address.fromJson(Map<String, dynamic> json) {
        street = json['street'];
        city = json['city'];
        zipcode = json['zipcode'];
      }
    
      Map<String, dynamic> toJson() {
        final Map<String, dynamic> data = new Map<String, dynamic>();
        data['street'] = this.street;
        data['city'] = this.city;
        data['zipcode'] = this.zipcode;
        return data;
      }
    }
    

使用生成的 Model 类

你可以使用生成的 UserModel 类来解析 JSON 数据或从对象生成 JSON 字符串。以下是如何使用这些类的示例:

import 'dart:convert';
import 'user_model.dart'; // 假设生成的 Model 类在这个文件中

void main() {
  // 示例 JSON 数据
  String jsonString = '''
  {
    "name": "John Doe",
    "age": 30,
    "email": "john.doe@example.com",
    "address": {
      "street": "123 Main St",
      "city": "Anytown",
      "zipcode": "12345"
    }
  }
  ''';

  // 解析 JSON 数据
  UserModel user = UserModel.fromJson(jsonDecode(jsonString));

  // 打印解析后的对象属性
  print('Name: ${user.name}');
  print('Age: ${user.age}');
  print('Email: ${user.email}');
  print('Street: ${user.address?.street}');

  // 将对象转换回 JSON 字符串
  String jsonData = jsonEncode(user.toJson());
  print('JSON Data: $jsonData');
}

结论

json2model 插件极大地简化了从 JSON 数据生成 Dart Model 类的过程。通过上述步骤,你可以轻松地将 JSON 数据转换为 Flutter 应用中可使用的 Dart 类。希望这个示例对你有帮助!

回到顶部