You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让Freezed仅生成toJson方法,禁用fromJson方法?

如何让Freezed仅生成toJson方法而跳过fromJson?

当然可以直接让Freezed跳过fromJson的生成,比抛出UnimplementedError的方案更干净,具体可以通过结合json_serializable的注解配置实现:

  • 给你的VoucherRequestRM类添加@JsonSerializable(generateFromJson: false)注解,明确告诉代码生成器不要生成反序列化方法
  • 保留Freezed的基础配置,只手动声明toJson的调用逻辑

示例代码如下:

import 'package:freezed_annotation/freezed_annotation.dart';

part 'voucher_request_rm.freezed.dart';
part 'voucher_request_rm.g.dart';

@freezed
@JsonSerializable(generateFromJson: false)
class VoucherRequestRM with _$VoucherRequestRM {
  const factory VoucherRequestRM({
    required String voucherCode,
    required int applyAmount,
    // 其他业务字段
  }) = _VoucherRequestRM;

  // 仅生成序列化方法
  Map<String, dynamic> toJson() => _$VoucherRequestRMToJson(this);
}

执行flutter pub run build_runner build后,生成的.g.dart文件里只会包含_$VoucherRequestRMToJson方法,不会出现fromJson相关的代码,完全符合你的需求。

这种方案的优势在于从根源上避免了无用代码的生成,不需要在运行时处理错误,比你之前的方案更高效、更符合代码规范。

内容的提问来源于stack exchange,提问作者zex_rectooor

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:37:40