dart - 标志以忽略属性 build_runner 的序列化

标签 dart flutter json-serialization

有没有办法忽略 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

关于dart - 标志以忽略属性 build_runner 的序列化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55179700/

相关文章:

ios - Swift 4 对成员 'jsonObject(with:options:)' 的引用不明确

asp.net-core-2.1 - .net 核心项目中不允许使用 JavaScriptSerializer?

flutter - json_serializable 增强型枚举不起作用。这需要启用 'enhanced-enums' 语言功能

flutter - 如何在 flutter 对话框中添加圆形边框?

flutter - 如何在flutter中设置数据表的样式?

android - Flutter 是否提供即时应用程序?

flutter - 如何使用 ValueListenableProvider

flutter - 如何从这种类型的列表访问单个值?

flutter - flutter 如何下载文件并将其保存到手机存储中

dart - 可滚动的 flutter 弹出菜单