A Fast, source-generated, Json Serializer for dotnet.
This is a fast serializer for generating Json representation of objects, based on source-generated code which generates code on par with what a developer would write by hand.
- Enable fast serialization of objects.
- Avoid reflection and virtual dispatch within the generated code.
- Allow a certain level of customization for generated Json.
- Generate fully trimmable serialization code.
- Support all languages for which source generators are available.
- Complete feature parity with Newtonsoft.Json and System.Text.Json.
- Runtime customization of serialization code.
- Attribute name customization
- Attribute naming convention customization
- snake case
- kebab case
- camel case
- pascal case
- Polymorphic serialization
- Ignored properties
- Field serialization
- Custom member ordering
- Cyclic references
- Type cycles
- Object cycles
- Ignore
- Preserve
- Do nothing
- Object converters
- Nullable value types
- Top-level Nullable value types
- Collection, sequences, spans, immutable collections, frozen collections
- Arrays
- List
- Dictionary<Key, Value>
- Primitive objects as element
- Complex objects as element
- Complex objects as value
- Arrays as value
- Dictionaries as value
- [Readonly]Span
- Top-level collections
- Arrays
- List
- Dictionary<Key, Value>
- Support for serialization callbacks
- IJsonSerializing
- IJsonSerialized
- IJsonDeserializing
- IJsonDeserialized
- Complex properties
- Primitive types
- byte
- sbyte
- short
- ushort
- int
- uint
- long
- ulong
- float
- double
- string
- Guid
- Version
- Timespace
- DateTime
- DateOnly
- TimeOnly
- char
- Rune
- Top-Level Primitive types
- byte
- sbyte
- short
- ushort
- int
- uint
- long
- ulong
- float
- double
- string
- Guid
- Version
- Timespace
- DateTime
- DateOnly
- TimeOnly
- char
- Rune
- Test cases
- Build pipeline