All notable changes to Serde
will be documented in this file.
Updates should follow the Keep a CHANGELOG principles.
This release includes a small breaking change. The deformatter methods all now have nullable returns. This is necessary to allow for deserializing values that are legitimately and permissibly null. If you do not have any custom Importers, you should not be impacted. If you do have a custom Importer, you may need to adjust your logic to account for the return value from the deformatter being null.
- Nothing
- Nothing
- Explicit null values in incoming data should now deserialize to null-valued properties, assuming the types permit.
- Nothing
- Nothing
The main change in this release is better support for flattening value objects. See the additional section in the README for more details.
- A new
flattenPrefix
setting on flattened fields allows for having multiple properties of the same type that get flattened. The prefix allows them to be differentiated.
- Nothing
serializedName
/renameWith
is now respected on fields in flattened objects.
- Nothing
- Nothing
- Forgot to include a changelog on 1.0.0, hence 1.0.1. Sigh.
- Include diagrams in the README.
- Split up internal Enums for better type safety.
- Renamed internal Enums for clarity.
- Added a marker interface for all exceptions.
- Null is now a legal value for a property to deserialize to.
- Null values will now be serialized as null, rather than omitted.
- BC BREAK: The return type of formatter methods have changed to support null as a legal value.
arrayType
on Sequences and Dictionaries can now enforce scalar types.- Serde now uses PHPUnit 10.
- There was a bug that caused default values in attributes to be ignored in some cases. That has been corrected.
- Flattened nullable objects previously got deserialized into empty objects. Now they are left as null.
- Array-based sequences now support non-strict mode, in which they will accept non-sequence arrays but discard the keys.
- In the default SerdeCommon configuration, dictionaries are now checked first, meaning an un-attributed array will get interpreted as a dictionary, not a sequence. This is to minimize data loss. Explicitly specifying a sequence or dictionary attribute is strongly recommended in all cases.
- The sequence and dictionary exporters were eagerly processing lazy properties. This has been corrected, and now a generator property will be serialized one element at a time.
- Support for iterable properties, including generators.
- Support for serializing/deserializing from CSV files.
- Support for stream-serializing to a CSV format.
- Support for specifying a custom format and timezone when serializing DateTime fields.
- Support for making individual fields required when deserializing.
- Support for specifying at the class level that fields are required unless otherwise specified.
- Nothing
- Nothing
- Nothing
- Nothing
- Dictionary fields can now be restricted to just string or just integer keys.
- TypeField definitions now have a validation method to vet values as supportable.
- Nothing
- Dictionary fields now support integer keys by default.
- Nothing
- Nothing