json_serializable 1.1.0
json_serializable: ^1.1.0 copied to clipboard
Generates utilities to aid in serializing to/from JSON.
Provides Dart Build System builders for handling JSON.
The builders generate code when they find members annotated with classes defined in package:json_annotation.
-
To generate to/from JSON code for a class, annotate it with
JsonSerializable
. You can provide arguments toJsonSerializable
to configure the generated code. You can also customize individual fields by annotating them withJsonKey
and providing custom arguments. -
To generate a Dart field with the contents of a file containting JSON, use the
JsonLiteral
annotation.
To configure your project for the latest released version of,
json_serializable
see the example.
Example #
Given a library example.dart
with an Person
class annotated with
@JsonSerializable()
:
import 'package:json_annotation/json_annotation.dart';
part 'example.g.dart';
@JsonSerializable(nullable: false)
class Person {
final String firstName;
final String lastName;
final DateTime dateOfBirth;
Person({this.firstName, this.lastName, this.dateOfBirth});
factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
Map<String, dynamic> toJson() => _$PersonToJson(this);
}
Building creates the corresponding part example.g.dart
:
part of 'example.dart';
Person _$PersonFromJson(Map<String, dynamic> json) {
return Person(
firstName: json['firstName'] as String,
lastName: json['lastName'] as String,
dateOfBirth: DateTime.parse(json['dateOfBirth'] as String));
}
Map<String, dynamic> _$PersonToJson(Person instance) => <String, dynamic>{
'firstName': instance.firstName,
'lastName': instance.lastName,
'dateOfBirth': instance.dateOfBirth.toIso8601String()
};
Build configuration #
Besides setting arguments on the associated annotation classes, you can also
configure code generation by setting values in build.yaml
.
targets:
$default:
builders:
json_serializable:
options:
# Options configure how source code is generated for every
# `@JsonSerializable`-annotated class in the package.
#
# The default value for each is listed.
#
# For usage information, reference the corresponding field in
# `JsonSerializableGenerator`.
use_wrappers: false
any_map: false
checked: false
explicit_to_json: false
generate_to_json_function: true