json_serializable 3.1.0
json_serializable: ^3.1.0 copied to clipboard
Automatically generate code for converting to and from JSON by annotating Dart classes.
3.1.0 #
- Support
Mapkeys of typeint,BigInt,DateTime, andUri. - Trailing commas are now added to generated constructor arguments and the
elements in
Mapliterals. - Support
package:analyzer>=0.33.3 <0.38.0
3.0.0 #
This release is entirely BREAKING changes. It removes underused features that added disproportionate complexity to this package. This cleanup should ease future feature work.
- Removed support for
JsonSerializable.useWrappers. - Removed support for
JsonSerializable.generateToJsonFunction. - Removed support for
encodeEmptyCollection. - If a field has a conversion function defined – either
JsonKey.toJsonor a customJsonConverterannotation – don't interceptnullvalues, even ifnullableis explicitly set tofalse. This allows these functions to provide alternative values fornull– such as an empty collection – which replaces the functionality provided byencodeEmptyCollection.- NOTE: this is SILENTLY BREAKING. There is no corresponding deprecation for this change. If you use converters, please make sure to test your code!
2.3.0 #
- Added
pascalas an additionalfieldRenameoption.
2.2.3 #
- Removed special handling of undefined types due to changes in
package:analyzer. These types are now treated asdynamic.
2.2.2 #
- Require at least Dart
2.2.0. - Allow
build_config0.4.x.
2.2.1 #
- Fixed an error when a property/field is defined in a
mixin.
2.2.0 #
- If a field has a conversion function defined – either
JsonKey.toJsonor a customJsonConverterannotation – handle the case where the function returnsnulland bothnullableandincludeIfNullarefalse.
2.1.2 #
- Support
package:json_annotation>=2.1.0 <2.3.0.
2.1.1 #
- Support
package:analyzer>=0.33.3 <0.37.0
2.1.0 #
-
Require at least Dart
2.1.1. -
Added support for
encodeEmptyCollectiononJsonKeyandJsonSerializable. -
Added support for
BigInt. -
Added
BigIntTypeHelpertotype_helper.dartlibrary. -
Provide a more helpful error if the builder is improperly configured.
2.0.3 #
-
When invoking a
fromJsonconstructor on a field type, generate a conversion expression derived from the the constructor parameter type. -
Be more strict about the supported
List,Set, orMaptypes. This may causes errors to be raised in cases where invalid code was generated before. It also allows implementations of these types to add afromJsonconstructor to support custom decoding. -
Small change to the whitespace around converted maps to improve a very slow path when formatting generated code.
2.0.2 #
-
Log warnings when
JsonKey.defaultValueis set with other fields.- With
toJson: usenullable: falseinstead ofdefaultValue. - With both
disallowNullValueandrequiredset totrue.
- With
-
Avoid no-op call to
mapwhen decoding a field of typeSet. -
Support
package:analyzer>=0.33.3 <0.36.0
2.0.1 #
- Support
package:analyzerv0.34.0.
2.0.0 #
-
Support all
build.yamlconfiguration options on classes by adding a number of fields toJsonSerializable:anyMap,checked,explicitToJson,generateToJsonFunction, anduseWrappers. -
Support decode/encode of
dart:coreDuration -
Code generated for fields and classes annotated with
JsonConverterinstances now properly handles nullable fields. -
Build configuration
-
You can now configure all settings exposed by the
JsonSerializableannotation withinbuild.yaml. -
BREAKING Unsupported options defined in
build.yamlwill cause exceptions instead of being logged and ignored.
-
-
json_serializable.dart- BREAKING
JsonSerializableGeneratornow exposes aconfigproperty of typeJsonSerializableinstead of individual properties forchecked,anyMay, etc. This will affect anyone creating or using this class via code.
- BREAKING
-
type_helper.dart-
BREAKING
SerializeContextandDeserializeContexthave been replaced with newTypeHelperContextclass. -
TypeHelpernow has a type argument allowing implementors to specify a specific implementation ofTypeHelperContextfor calls toserializeanddeserialize. Many of the includedTypeHelperimplementations have been updated to indicate they expect more information from the source generator.
-
1.5.1 #
- Support the latest
package:analyzer.
1.5.0 #
- Added support for
JsonConvertannotation on fields.
1.4.0 #
-
type_helper.dartTypeHelperserializeanddeserializehave return typeObjectinstead ofString. This allows coordination between instances to support more advanced features – like using the newLambdaResultclass to avoid creating unnecessary lambdas. When creatingTypeHelperimplementations, handle non-Stringresults by callingtoString()on unrecognized values.
-
Declare support for
package:buildversion1.x.x.
1.3.0 #
-
Add support for types annotated with classes that extend
JsonConverterfrompackage:json_annotation. -
Export the following
TypeHelperimplementations inpackage:json_serializable/type_helper.dart:ConvertHelper,EnumHelper,IterableHelper,JsonConverterHelper,MapHelper,ValueHelper -
Added support for
Settype as a target.
1.2.1 #
- Added back
constfor maps generated withchecked: trueconfiguration.
1.2.0 #
-
Now throws
InvalidGenerationSourceErrorinstead ofUnsupportedErrorfor some classes of constructor errors. -
Supports class-static functions for
toJsonandfromJsononJsonKey. -
Provide a warning about ignored setter-only properties instead of crashing.
-
Added back
constfor lists generated withdisallowUnrecognizedKeys,required, anddisallowNullValue. -
Fixed a bug when
disallowUnrecognizedKeysis enabled. -
Fixed a number of issues when dealing with inherited properties.
1.1.0 #
- Added support for automatically converting field names to JSON map keys as
kebab-caseorsnake_casewith a new option on theJsonSerializableannotation.
1.0.1 #
- Explicit
newandconstare no longer generated.
1.0.0 #
-
BREAKING By default, code generated to support
toJsonnow creates a top-level function instead of a mixin. The default for thegenerate_to_json_functionis nowtrue. To opt-out of this change, setgenerate_to_json_functiontofalse. -
Now supports changing the serialized values of enums using
JsonValue.enum AutoApply { none, dependents, @JsonValue('all_packages') allPackages, @JsonValue('root_package') rootPackage } -
JsonSerializableGenerator.generateForAnnotatedElementnow returnsIterable<String>instead ofString. -
SerializeContextandDeserializeContextnow have anaddMemberfunction which allowsTypeHelperinstances to add additional members when handling a field. This is useful for generating shared helpers, for instance. -
BREAKING The
headeroption is no longer supported and must be removed frombuild.yaml. -
If a manual build script is used the
json_serializablebuilder must be switched tohideOutput: true, and thecombiningBuilderfromsource_genmust be included following this builder. When using a generated build script withpub run build_runnerorwebdevthis is handled automatically.
0.5.8+1 #
- Support the Dart 2.0 stable release.
0.5.8 #
-
Small fixes to support Dart 2 runtime semantics.
-
Support serializing types provided by platform-specific libraries (such as Flutter) if they use custom convert functions.
0.5.7 #
-
Added support for
JsonKey.required.- When
true, generated code throws aMissingRequiredKeysExceptionif the key does not exist in the JSON map used to populate the annotated field. - Will be captured and wrapped in a
CheckedFromJsonExceptionifcheckedis enabled injson_serializable.
- When
-
Added
JsonKey.disallowNullValue.- When
true, generated code throws aDisallowedNullValueExceptionif the corresponding keys exist in in the JSON map, but it's value is null. - Will be captured and wrapped in a
CheckedFromJsonExceptionifcheckedis enabled injson_serializable.
- When
-
Added support for
Uriconversion. -
Added missing
checkedparameter to theJsonSerializableGenerator.withDefaultHelpersconstructor. -
Added
explicit_to_jsonconfiguration option.- See
JsonSerializableGenerator.explicitToJsonfor details.
- See
-
Added
generate_to_json_functionconfiguration option.- See
JsonSerializableGenerator.generateToJsonFunctionfor details.
- See
0.5.6 #
- Added support for
JsonSerializable.disallowUnrecognizedKeys.- Throws an
UnrecognizedKeysExceptionif it finds unrecognized keys in the JSON map used to populate the annotated field. - Will be captured and wrapped in a
CheckedFromJsonExceptionifcheckedis enabled injson_serializable.
- Throws an
- All
fromJsonconstructors now use block syntax instead of fat arrows.
0.5.5 #
-
Added support for
JsonKey.defaultValue. -
enumdeserialization now uses helpers provided byjson_annotation. -
Small change to how nullable
Mapvalues are deserialized. -
Small whitespace changes to
JsonLiteralgeneration to align withdartfmt. -
Improve detection of
toJsonandfromJsonin nested types.
0.5.4+1 #
- Fixed a bug introduced in
0.5.4in some cases where enum values are nested in collections.
0.5.4 #
-
Add
checkedconfiguration option. Iftrue, generatedfromJsonfunctions include extra checks to validate proper deserialization of types. -
Added
any_mapto configuration. AllowsfromJsoncode to support dynamicMapinstances that are not explicitlyMap<String, dynaimc>. -
Added support for classes with type arguments.
-
Use
Map.mapfor more map conversions. Simplifies generated code and fixes a subtle issue when theMapkey type isdynamicorObject.
0.5.3 #
-
Require the latest version of
package:analyzer-v0.32.0. -
If
JsonKey.fromJsonfunction parameter isIterableorMapwith type arguments ofdynamicorObject, omit the arguments when generating a cast._myHelper(json['key'] as Map)instead of_myHelper(json['key'] as Map<dynamic, dynamic>). -
JsonKey.fromJson/.toJsonnow support functions with optional arguments.
0.5.2 #
- If
JsonKey.fromJson/toJsonare set, apply them before any custom or defaultTypeHelperinstances. This allows customDateTimeparsing, by preempting the existingDateTimeTypeHelper.
0.5.1 #
-
Support new
fromJsonandtoJsonfields onJsonKey. -
Use
logexposed bypackage:build. This requires end-users to have at leastpackage:build_runner^0.8.2. -
Updated minimum
package:source_gendependency to0.8.1which includes improved error messages.
0.5.0 #
-
BREAKING Removed deprecated support for
require_library_directive/requireLibraryDirectiveinbuild_runnerconfiguration. -
BREAKING Removed the deprecated
generators.dartlibrary. -
BREAKING Removed
jsonPartBuilderfunction from public API. -
Support the latest
package:source_gen. -
Private and ignored fields are now excluded when generating serialization and deserialization code by using
@JsonKey(ignore: true). -
Throw an exception if a private field or an ignored field is referenced by a required constructor argument.
-
More comprehensive escaping of string literals.
package:json_serializable/type_helper.dart #
-
Breaking The
nullableparameter onTypeHelper.serializeand.deserializehas been removed. It is now exposed inSerializeContextandDeserializeContextabstract classes as a read-only property. -
Potentially Breaking The
metadataproperty onSerializeContextandDeserializeContextis now readonly. This would potentially break code that extends these classes – which is not expected.
0.4.0 #
-
Potentially Breaking Inherited fields are now processed and used when generating serialization and deserialization code. There is a possibility that the generated code may change in undesired ways for classes annotated for
v0.3. -
Avoid unnecessary braces in string escapes.
-
Use single quotes when generating code.
0.3.2 #
- The
require_library_directiveoption now defaults tofalse. The option will be removed entirely in0.4.0.
0.3.1+2 #
- Support the latest version of the
analyzerpackage.
0.3.1+1 #
- Expanded
package:buildsupport to allow version0.12.0.
0.3.1 #
-
Add a
build.yamlso the builder can be consumed by users ofbuild_runnerversion 0.7.0. -
Now requires a Dart
2.0.0-devrelease.
0.3.0 #
-
NEW top-level library
json_serializable.dart.-
Replaces now deprecated
generators.dartto accessJsonSerializableGeneratorandJsonLiteralGenerator. -
Adds the
jsonPartBuilderfunction to make it easy to create aPartBuilder, without creating an explicit dependency onsource_gen.
-
-
BREAKING
UnsupportedTypeErroradded a new required constructor argument:reason. -
BREAKING The deprecated
annotations.dartlibrary has been removed. Usepackage:json_annotationinstead. -
BREAKING The arguments to
TypeHelperserializeanddeserializehave changed.SerializeContextandDeserializeContext(new classes) are now passed instead of theTypeHelperGeneratortypedef (which has been deleted).
-
JsonSerializableGeneratornow supports an optionaluseWrappersargument when generates and uses wrapper classes to (hopefully) improve the speed and memory usage of serialization – at the cost of more code.NOTE:
useWrappersis not guaranteed to improve the performance of serialization. Benchmarking is recommended. -
Make
nullfield handling smarter. If a field is classified as notnullable, then use this knowledge when generating serialization code – even ifincludeIfNullisfalse.
0.2.5 #
-
Throw an exception if a duplicate JSON key is detected.
-
Support the
nullablefield on theJsonSerializableclass annotation.
0.2.4+1 #
- Throw a more helpful error when a constructor is missing.
0.2.4 #
-
Moved the annotations in
annotations.darttopackage:json_annotations.- Allows package authors to release code that has the corresponding annotations without requiring package users to inherit all of the transitive dependencies.
-
Deprecated
annotations.dart.
0.2.3 #
- Write out
toJsonmethods more efficiently when the first fields written are not intercepted by the null-checking method.
0.2.2+1 #
-
Simplify the serialization of
Mapinstances when no conversion is required forvalues. -
Handle
intliterals in JSON being assigned todoublefields.
0.2.2 #
- Enable support for
enumvalues. - Added
asConsttoJsonLiteral. - Improved the handling of Dart-specific characters in JSON strings.
0.2.1 #
- Upgrade to
package:source_genv0.7.0
0.2.0+1 #
- When serializing classes that implement their own
fromJsonconstructor, honor their constructor parameter type.
0.2.0 #
-
BREAKING Types are now segmented into their own libraries.
-
package:json_serializable/generators.dartcontainsGeneratorimplementations. -
package:json_serializable/annotations.dartcontains annotations. This library should be imported with your target classes. -
package:json_serializable/type_helpers.dartcontainsTypeHelperclasses 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
canmethods. Returnnullfrom(de)serializeif the provided type is not supported. -
Added
(de)serializeNestedarguments to(de)serializemethods allowing generic types. This is how support forIterable,List, andMapis implemented.
-
-
BREAKING
JsonKey.jsonNamewas renamed tonameand is now a named parameter. -
Added support for optional, non-nullable fields.
-
Added support for excluding
nullvalues 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.



