Flutter JSON模型解析插件cljson_model的使用

Flutter JSON模型解析插件cljson_model的使用

安装

pubspec.yaml文件中添加以下依赖:

dev_dependencies: 
  cljson_model: ^2.0.0
  json_serializable: ^6.7.1

然后运行以下命令以更新依赖项:

flutter pub get

使用

  1. 定义数据模型

    首先,创建一个数据模型类,并使用[@JsonModel](/user/JsonModel)注解来标记该类。例如:

    import 'package:cljson_model/cljson_model.dart';
    
    [@JsonModel](/user/JsonModel)()
    class User {
      String name;
      int age;
    
      // 构造函数
      User({required this.name, required this.age});
    
      // 工厂方法用于从JSON解析
      factory User.fromJson(Map<String, dynamic> json) => _$UserFromJson(json);
    
      // 转换为JSON的方法
      Map<String, dynamic> toJson() => _$UserToJson(this);
    }
  2. 生成JSON序列化代码

    pubspec.yaml文件中添加build_runner依赖以生成必要的代码:

    dev_dependencies:
      build_runner: ^2.1.7
      cljson_model_generator: ^2.0.0

    然后运行以下命令以生成代码:

    flutter pub run build_runner build
  3. 解析JSON数据

    假设你有一个JSON字符串,可以使用fromJson工厂方法将其解析为User对象:

    void main() {
      // JSON字符串
      String jsonString = '{"name": "Alice", "age": 25}';
    
      // 解析JSON
      User user = User.fromJson(jsonDecode(jsonString));
    
      // 输出解析后的数据
      print('Name: ${user.name}, Age: ${user.age}');
    }
  4. 将数据转换为JSON

    如果需要将User对象转换回JSON字符串,可以使用toJson方法:

    void main() {
      // 创建User对象
      User user = User(name: "Bob", age: 30);
    
      // 转换为JSON
      Map<String, dynamic> json = user.toJson();
    
      // 输出JSON
      print(json);
    }
1 回复

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


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

1. 安装 cljson_model 插件

首先,你需要在你的 Flutter 项目中添加 cljson_model 插件作为开发依赖项。在 pubspec.yaml 文件中添加以下内容:

dev_dependencies:
  cljson_model: ^1.0.0

然后运行 flutter pub get 来安装插件。

2. 创建 JSON 文件

在你的项目中创建一个 JSON 文件,例如 example.json,并定义你的 JSON 数据结构。例如:

{
  "name": "John Doe",
  "age": 30,
  "email": "john.doe@example.com",
  "address": {
    "street": "123 Main St",
    "city": "Anytown",
    "state": "CA",
    "zip": "12345"
  },
  "phoneNumbers": [
    {
      "type": "home",
      "number": "555-555-5555"
    },
    {
      "type": "work",
      "number": "555-555-1234"
    }
  ]
}

3. 使用 cljson_model 生成模型类

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

flutter pub run cljson_model -i path/to/example.json -o lib/models
  • -i 参数指定输入的 JSON 文件路径。
  • -o 参数指定生成的模型类输出目录。

运行命令后,cljson_model 会根据 JSON 文件生成相应的 Dart 模型类,并保存到指定的输出目录中。

4. 查看生成的模型类

生成的模型类将包含与 JSON 数据结构对应的 Dart 类。例如,example.json 会生成以下模型类:

class Example {
  String name;
  int age;
  String email;
  Address address;
  List<PhoneNumber> phoneNumbers;

  Example({
    required this.name,
    required this.age,
    required this.email,
    required this.address,
    required this.phoneNumbers,
  });

  factory Example.fromJson(Map<String, dynamic> json) {
    return Example(
      name: json['name'],
      age: json['age'],
      email: json['email'],
      address: Address.fromJson(json['address']),
      phoneNumbers: List<PhoneNumber>.from(json['phoneNumbers'].map((x) => PhoneNumber.fromJson(x))),
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'name': name,
      'age': age,
      'email': email,
      'address': address.toJson(),
      'phoneNumbers': List<dynamic>.from(phoneNumbers.map((x) => x.toJson())),
    };
  }
}

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

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

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

  Map<String, dynamic> toJson() {
    return {
      'street': street,
      'city': city,
      'state': state,
      'zip': zip,
    };
  }
}

class PhoneNumber {
  String type;
  String number;

  PhoneNumber({
    required this.type,
    required this.number,
  });

  factory PhoneNumber.fromJson(Map<String, dynamic> json) {
    return PhoneNumber(
      type: json['type'],
      number: json['number'],
    );
  }

  Map<String, dynamic> toJson() {
    return {
      'type': type,
      'number': number,
    };
  }
}

5. 使用生成的模型类

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

import 'dart:convert';
import 'models/example.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"
    },
    "phoneNumbers": [
      {
        "type": "home",
        "number": "555-555-5555"
      },
      {
        "type": "work",
        "number": "555-555-1234"
      }
    ]
  }
  ''';

  Map<String, dynamic> jsonMap = jsonDecode(jsonString);
  Example example = Example.fromJson(jsonMap);

  print(example.name); // 输出: John Doe
  print(example.address.city); // 输出: Anytown
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!