Skip to content

A Fast, source-generated, Json Serializer for dotnet

License

Notifications You must be signed in to change notification settings

tanveerbadar/FrabJouS

Repository files navigation

FrabJouS

A Fast, source-generated, Json Serializer for dotnet.

Overview

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.

Goals

  1. Enable fast serialization of objects.
  2. Avoid reflection and virtual dispatch within the generated code.
  3. Allow a certain level of customization for generated Json.
  4. Generate fully trimmable serialization code.
  5. Support all languages for which source generators are available.

Non-goals

  1. Complete feature parity with Newtonsoft.Json and System.Text.Json.
  2. Runtime customization of serialization code.

Planned Feature Support

  • 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

About

A Fast, source-generated, Json Serializer for dotnet

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages