有没有办法忽略JsonSerializable类中属性的序列化?

我正在使用build_runner生成映射代码.

实现这一点的一种方法是在.g.dart文件中注释该特定属性的映射,不过如果可以在该属性上添加忽略属性就更好了.

import 'package:json_annotation/json_annotation.dart';

part 'example.g.dart';

@JsonSerializable()
class Example {
  Example({this.a, this.b, this.c,});

  int a;
  int b;

  /// Ignore this property
  int c;

  factory Example.fromJson(Map<String, dynamic> json) =>
      _$ExampleFromJson(json);

  Map<String, dynamic> toJson() => _$ExampleToJson(this);
}

结果

Example _$ExampleFromJson(Map<String, dynamic> json) {
  return Example(a: json['a'] as int, b: json['b'] as int, c: json['c'] as int);
}

Map<String, dynamic> _$ExampleToJson(Example instance) =>
    <String, dynamic>{'a': instance.a, 'b': instance.b, 'c': instance.c};

我所做的是通过注释c的映射来实现这一点.

Example _$ExampleFromJson(Map<String, dynamic> json) {
  return Example(a: json['a'] as int, b: json['b'] as int, c: json['c'] as int);
}

Map<String, dynamic> _$ExampleToJson(Example instance) =>
    <String, dynamic>{'a': instance.a, 'b': instance.b, /* 'c': instance.c */};

推荐答案

在不希望包含的字段前添加@JsonKey(ignore: true)

 @JsonKey(ignore: true)
 int c;

另见https://github.com/dart-lang/json_serializable/blob/06718b94d8e213e7b057326e3d3c555c940c1362/json_annotation/lib/src/json_key.dart#L45-L49

Flutter相关问答推荐

MobX Build_Runner问题:不生成.G文件(Flutter )

DART 3.3:为什么扩展类型不起作用?

Android上火焰瓷砖之间的线条飘动

在LinkedIn上分享Fighter和Web的链接会产生不同的结果

为什么当我使用Riverpod更新状态时,列表会被刷新?

在Dart中使用Riverpod代码生成时出现问题(addListener)

Flutter 附近的连接

Flutter中不使用Container是否可以做margin

将自定义容器附加到屏幕底部

如何从flutter中不同类别的列表中获取所有产品

如何在Flutter中的textField中在可编辑文本和前缀图标之间添加空格?

不使用 GlobalKey 仍然收到 GlobalKey 被多次使用的错误

PreferredSizeWidget类不能用作混合,因为它既不是混合类也不是混合

启动画面中的淡入淡出图像

无法使用 bloc 更新 ListView.builder 的特定时间

graphql_flutter 错误:非抽象类GraphQLWebSocketChannel缺少实现

Flutter/Dart - 从外部类更新状态

如何流畅切换画面?

如何在 ListView.builder 中扩展文本?

我想在数组中添加项目