Флаг для игнорирования сериализации свойства build_runner - PullRequest
1 голос
/ 15 марта 2019

Есть ли способ игнорировать сериализацию свойства в классе 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 */};

1 Ответ

1 голос
/ 15 марта 2019

Добавьте @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

...