Viewing version 0.2.2. Open the latest package page.

json_serializable

0.2.2

Generates utilities to aid in serializing to/from JSON.

Download archive

Readme

Build Status

Provides source_gen Generators which generate code to make it simple to serialize to and from JSON.

Example

Given a library example.dart with an Person class annotated with @JsonSerializable():

library json_serializable.example;

import 'package:json_serializable/annotations.dart';
part 'example.g.dart';

@JsonSerializable()
class Person extends Object with _$PersonSerializerMixin {
  final String firstName;
  @JsonKey(includeIfNull: false)
  final String middleName;
  final String lastName;

  @JsonKey(name: 'date-of-birth', nullable: false)
  final DateTime dateOfBirth;

  @JsonKey(name: 'last-order')
  final DateTime lastOrder;

  @JsonKey(nullable: false)
  List<Order> orders;

  Person(this.firstName, this.lastName, this.dateOfBirth,
      {this.middleName, this.lastOrder, List<Order> orders})
      : this.orders = orders ?? <Order>[];

  factory Person.fromJson(Map<String, dynamic> json) => _$PersonFromJson(json);
}

source_gen creates the corresponding part example.g.dart:

Person _$PersonFromJson(Map<String, dynamic> json) => new Person(
    json['firstName'] as String,
    json['lastName'] as String,
    DateTime.parse(json['date-of-birth'] as String),
    middleName: json['middleName'] as String,
    lastOrder: json['last-order'] == null
        ? null
        : DateTime.parse(json['last-order'] as String),
    orders: (json['orders'] as List)
        .map((e) => new Order.fromJson(e as Map<String, dynamic>))
        .toList());

abstract class _$PersonSerializerMixin {
  String get firstName;
  String get middleName;
  String get lastName;
  DateTime get dateOfBirth;
  DateTime get lastOrder;
  List<Order> get orders;
  Map<String, dynamic> toJson() {
    var $map = <String, dynamic>{};
    void $writeNotNull(String key, dynamic value) {
      if (value != null) {
        $map[key] = value;
      }
    }

    $map['firstName'] = firstName;
    $writeNotNull('middleName', middleName);
    $map['lastName'] = lastName;
    $map['date-of-birth'] = dateOfBirth.toIso8601String();
    $map['last-order'] = lastOrder?.toIso8601String();
    $map['orders'] = orders;
    return $map;
  }
}
Changelog

0.2.2

  • Enable support for enum values.
  • Added asConst to JsonLiteral.
  • Improved the handling of Dart-specific characters in JSON strings.

0.2.1

  • Upgrade to package:source_gen v0.7.0

0.2.0+1

  • When serializing classes that implement their own fromJson constructor, honor their constructor parameter type.

0.2.0

  • BREAKING Types are now segmented into their own libraries.

    • package:json_serializable/generators.dart contains Generator implementations.

    • package:json_serializable/annotations.dart contains annotations. This library should be imported with your target classes.

    • package:json_serializable/type_helpers.dart contains TypeHelper classes and related helpers which allow custom generation for specific types.

  • BREAKING Generation fails for types that are not a JSON primitive or that do not explicitly supports JSON serialization.

  • BREAKING TypeHelper:

    • Removed can methods. Return null from (de)serialize if the provided type is not supported.

    • Added (de)serializeNested arguments to (de)serialize methods allowing generic types. This is how support for Iterable, List, and Map is implemented.

  • BREAKING JsonKey.jsonName was renamed to name and is now a named parameter.

  • Added support for optional, non-nullable fields.

  • Added support for excluding null values when generating JSON.

  • Eliminated all implicit casts in generated code. These would end up being runtime checks in most cases.

  • Provide a helpful error when generation fails due to undefined types.

0.1.0+1

  • Fix homepage in pubspec.yaml.

0.1.0

  • Split off from source_gen.

  • Add /* unsafe */ comments to generated output likely to be unsafe.

  • Support (de)serializing values in Map.

  • Fix ordering of fields when they are initialized via constructor.

  • Don't use static members when calculating fields to (de)serialize.

Installing

export PUB_HOSTED_URL=https://pub.mirror.p-hatan.ir
flutter pub add 'json_serializable:0.2.2'
pubspec.yaml
name: json_serializable
version: 0.2.2
author: Dart Team <misc@dartlang.org>
description: Generates utilities to aid in serializing to/from JSON.
homepage: https://github.com/dart-lang/json_serializable
environment:
  sdk: '>=1.24.0 <2.0.0-dev.infinity'
dependencies:
  analyzer: '>=0.29.10 <0.31.0'
  build: '>=0.9.0 <0.11.0'
  cli_util: ^0.1.0
  path: ^1.3.2
  source_gen: ^0.7.0
dev_dependencies:
  build_runner: ^0.4.0
  build_test: ^0.6.0
  collection: ^1.14.0
  test: ^0.12.3

Version history

VersionPublishedArchiveSHA-256
0.1.0Cached · Upstream SHA-256 matchedDownloadea38aff2…357ce4
0.1.0+1Cached · Upstream SHA-256 matchedDownload54608c1f…fae3e4
0.2.0Cached · Upstream SHA-256 matchedDownload228de10d…0dc07d
0.2.0+1Cached · Upstream SHA-256 matchedDownloadbc4de154…cd2c76
0.2.1Cached · Upstream SHA-256 matchedDownload925b3d51…19cab5
0.2.2Cached · Upstream SHA-256 matchedDownload4bde8d44…7c6625
0.2.2+1Cached · Upstream SHA-256 matchedDownload06b55410…03b5cf
0.2.3Cached · Upstream SHA-256 matchedDownload98f510ad…eac912
0.2.3+1Cached · Upstream SHA-256 matchedDownloade6363ffc…0f3f04
0.2.4Cached · Upstream SHA-256 matchedDownload332c5d27…4db89f
0.2.4+1Cached · Upstream SHA-256 matchedDownload9ee6223b…9cd202
0.2.5Cached · Upstream SHA-256 matchedDownload25d0c6df…5da947
0.3.0Cached · Upstream SHA-256 matchedDownload8970e927…c017f6
0.3.1Cached · Upstream SHA-256 matchedDownload4d856bb2…1086ee
0.3.1+1Cached · Upstream SHA-256 matchedDownloadceaa1075…d43605
0.3.1+2Cached · Upstream SHA-256 matchedDownload7576a95d…9b2e9d
0.3.2Cached · Upstream SHA-256 matchedDownload8fc35438…08ba16
0.4.0Cached · Upstream SHA-256 matchedDownload52fca6a7…bbb0d5
0.5.0Cached · Upstream SHA-256 matchedDownloadceb97da7…f705f8
0.5.1Cached · Upstream SHA-256 matchedDownload555278a0…31b474
0.5.2Cached · Upstream SHA-256 matchedDownload4a477c42…dea9df
0.5.3Cached · Upstream SHA-256 matchedDownload453fab42…39f3f8
0.5.4Cached · Upstream SHA-256 matchedDownload2b743d72…be94c7
0.5.4+1Cached · Upstream SHA-256 matchedDownload8e4f2cfa…4fc7de
0.5.5Cached · Upstream SHA-256 matchedDownload825ff2da…d2676c
0.5.6Cached · Upstream SHA-256 matchedDownload11092952…b28665
0.5.7Cached · Upstream SHA-256 matchedDownloadafd52873…21feff
0.5.8Cached · Upstream SHA-256 matchedDownload56d661f5…19ac8b
0.5.8+1Cached · Upstream SHA-256 matchedDownload6c80bfb5…d03209
1.0.0Cached · Upstream SHA-256 matchedDownloadca0c6ffc…e59fc5
1.0.1Cached · Upstream SHA-256 matchedDownloadc1479f04…3d14ee
1.1.0Cached · Upstream SHA-256 matchedDownload46d41e4f…df92f9
1.2.0Cached · Upstream SHA-256 matchedDownload4075e577…1b11b7
1.2.1Cached · Upstream SHA-256 matchedDownload8629d4cb…9de3dc
1.3.0Cached · Upstream SHA-256 matchedDownload0236f7f0…a15438
1.4.0Cached · Upstream SHA-256 matchedDownload394035ff…d1641c
1.5.0Cached · Upstream SHA-256 matchedDownload086663d3…fae00b
1.5.1Cached · Upstream SHA-256 matchedDownload977f3916…91f75b
2.0.0Cached · Upstream SHA-256 matchedDownload0b0a7239…f467f4
2.0.1Cached · Upstream SHA-256 matchedDownloade314d1da…a97c4f
2.0.2Cached · Upstream SHA-256 matchedDownload31fc6262…16290c
2.0.3Cached · Upstream SHA-256 matchedDownload12a5cfd6…199157
2.1.0Cached · Upstream SHA-256 matchedDownload330b4534…674a33
2.1.1Cached · Upstream SHA-256 matchedDownload9fb477f1…8ff6b9
2.1.2Cached · Upstream SHA-256 matchedDownload744218d0…9167e3
2.2.0Cached · Upstream SHA-256 matchedDownload35995d69…dcfe7b
2.2.1Cached · Upstream SHA-256 matchedDownload2dbfe302…23d088
2.2.2Cached · Upstream SHA-256 matchedDownload33166f5f…53ca39
2.3.0Cached · Upstream SHA-256 matchedDownloadc132f057…8d9ab2
3.0.0Cached · Upstream SHA-256 matchedDownload48d5294c…082144
3.1.0Cached · Upstream SHA-256 matchedDownload200067f1…872db6
3.2.0Cached · Upstream SHA-256 matchedDownload3c157eae…aba16d
3.2.1Cached · Upstream SHA-256 matchedDownload4c198769…eb5690
3.2.2Cached · Upstream SHA-256 matchedDownload358bed36…505f0c
3.2.3Cached · Upstream SHA-256 matchedDownload4ea7527e…908178
3.2.4Cached · Upstream SHA-256 matchedDownload8717e5f5…f655fd
3.2.5Cached · Upstream SHA-256 matchedDownload62aa4c18…96ec5c
3.3.0Cached · Upstream SHA-256 matchedDownloadf30cdc18…5eee4d
3.4.0Cached · Upstream SHA-256 matchedDownloadb198894a…a89ac9
3.4.1Cached · Upstream SHA-256 matchedDownload47222df0…cecf87
3.5.0Cached · Upstream SHA-256 matchedDownload8000c8f8…cc15f7
3.5.1Cached · Upstream SHA-256 matchedDownload698f328e…e4bab5
3.5.2Cached · Upstream SHA-256 matchedDownload0f9e7274…71bf71
4.0.0-nullsafety.0Cached · Upstream SHA-256 matchedDownload65086760…4d8130
4.0.0Cached · Upstream SHA-256 matchedDownloadbf5cd59a…50e4e3
4.0.1Cached · Upstream SHA-256 matchedDownloadf9f62b88…b2677e
4.0.2Cached · Upstream SHA-256 matchedDownloadc29fcdae…9ab2bc
4.0.3Cached · Upstream SHA-256 matchedDownloadc17fe901…049696
4.1.0Cached · Upstream SHA-256 matchedDownload04a71e61…0ec003
4.1.1Cached · Upstream SHA-256 matchedDownload194d4ffc…746aa0
4.1.2Cached · Upstream SHA-256 matchedDownloade58e35c2…2b5dba
4.1.3Cached · Upstream SHA-256 matchedDownloadbd4c3eec…990338
4.1.4Cached · Upstream SHA-256 matchedDownload86d3edf6…3bb323
5.0.0Cached · Upstream SHA-256 matchedDownloade55b5148…5ed5cd
5.0.1Cached · Upstream SHA-256 matchedDownloade760d5cf…bf636c
5.0.2Cached · Upstream SHA-256 matchedDownload4af86580…04cc1c
6.0.0Cached · Upstream SHA-256 matchedDownload5a0f38bb…21beb8
6.0.1Cached · Upstream SHA-256 matchedDownload45234e44…a4b23c
6.1.0Cached · Upstream SHA-256 matchedDownload64965139…038587
6.1.1Cached · Upstream SHA-256 matchedDownload9baed298…ead1cb
6.1.2Cached · Upstream SHA-256 matchedDownloadc7119ff7…7c1a31
6.1.3Cached · Upstream SHA-256 matchedDownload85f3e219…d57cfc
6.1.4Cached · Upstream SHA-256 matchedDownloaddc6f9551…1ee8ca
6.1.5Cached · Upstream SHA-256 matchedDownloada53cf24d…a08610
6.1.6Cached · Upstream SHA-256 matchedDownload3feab8c3…b10f39
6.2.0Cached · Upstream SHA-256 matchedDownload4fc3fb22…aee75d
6.3.0Cached · Upstream SHA-256 matchedDownload40e713f3…a90f13
6.3.1Cached · Upstream SHA-256 matchedDownload0cec7060…ee8238
6.3.2Cached · Upstream SHA-256 matchedDownloadfd1bcfbf…116932
6.4.0Cached · Upstream SHA-256 matchedDownload276b80dd…a54202
6.4.1Cached · Upstream SHA-256 matchedDownload581006a3…7cfe4b
6.5.0Cached · Upstream SHA-256 matchedDownload45205106…757fe9
6.5.1Cached · Upstream SHA-256 matchedDownload2296021b…f04bb4
6.5.2Cached · Upstream SHA-256 matchedDownloadf8aec50d…c97f74
6.5.3Cached · Upstream SHA-256 matchedDownload87ce738d…c2bfb0
6.5.4Cached · Upstream SHA-256 matchedDownloadf3c2c18a…53ef5d
6.6.0Cached · Upstream SHA-256 matchedDownload040088d9…700a75
6.6.1Cached · Upstream SHA-256 matchedDownloaddadc08bd…8d187a
6.6.2Cached · Upstream SHA-256 matchedDownload43793352…c04dc7
6.7.0Cached · Upstream SHA-256 matchedDownload61a60716…2325c4
6.7.1Cached · Upstream SHA-256 matchedDownloadaa1f5a89…b0b969
6.8.0Cached · Upstream SHA-256 matchedDownloadea1432d1…a1fd4b
6.9.0Cached · Upstream SHA-256 matchedDownloadc2fcb392…050d7c
6.9.1Cached · Upstream SHA-256 matchedDownloade7855a40…7154b4
6.9.2Cached · Upstream SHA-256 matchedDownload8f52361c…05d571
6.9.3Cached · Upstream SHA-256 matchedDownloadb0a98230…dd59c9
6.9.4Cached · Upstream SHA-256 matchedDownload81f04dee…c9e58a
6.9.5Cached · Upstream SHA-256 matchedDownloadc50ef5fc…feea8c
6.10.0-devCached · Upstream SHA-256 matchedDownloadab72b330…666393
6.10.0Cached · Upstream SHA-256 matchedDownloadce2cf974…55be27
6.11.0Cached · Upstream SHA-256 matchedDownload3f2913b7…b80cbd
6.11.1Cached · Upstream SHA-256 matchedDownload33a04066…3aa6fe
6.11.2Cached · Upstream SHA-256 matchedDownloadc5b2ee75…fdffa3
6.11.3Cached · Upstream SHA-256 matchedDownload6b253f78…e0b5b1
6.11.4Cached · Upstream SHA-256 matchedDownload5b89c1e3…f8104e
6.12.0Cached · Upstream SHA-256 matchedDownload93fba3ad…25760d
6.13.0Cached · Upstream SHA-256 matchedDownload44729f5c…16a6c0
6.13.1Cached · Upstream SHA-256 matchedDownloadfbcf404b…a78925
6.13.2Cached · Upstream SHA-256 matchedDownload2c15e78e…7f20db
6.14.0Cached · Upstream SHA-256 matchedDownloadffcd10cd…97e501
6.14.1Cached · Upstream SHA-256 matchedDownloade45aefa0…63113d
6.15.0Cached · Upstream SHA-256 matchedDownloadeb8d06bc…b541f8
6.15.1Cached · Upstream SHA-256 matchedDownload3b177bc1…fd0f33
6.15.2Cached · Upstream SHA-256 matchedDownloadcc782276…1c66f1

Dependencies

analyzer "\u003e=0.29.10 \u003c0.31.0"

build "\u003e=0.9.0 \u003c0.11.0"

cli_util "^0.1.0"

path "^1.3.2"

source_gen "^0.7.0"