All notable changes to Serde
will be documented in this file.
Updates should follow the Keep a CHANGELOG principles.
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