Bodu.Text.Serialization 1.0.0

dotnet add package Bodu.Text.Serialization --version 1.0.0
                    
NuGet\Install-Package Bodu.Text.Serialization -Version 1.0.0
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Bodu.Text.Serialization" Version="1.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Bodu.Text.Serialization" Version="1.0.0" />
                    
Directory.Packages.props
<PackageReference Include="Bodu.Text.Serialization" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Bodu.Text.Serialization --version 1.0.0
                    
#r "nuget: Bodu.Text.Serialization, 1.0.0"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Bodu.Text.Serialization@1.0.0
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Bodu.Text.Serialization&version=1.0.0
                    
Install as a Cake Addin
#tool nuget:?package=Bodu.Text.Serialization&version=1.0.0
                    
Install as a Cake Tool

Bodu.Text.Serialization

API stability — Stable. The public API surface is committed; breaking changes are reserved for a major-version bump per SemVer.

The shared serialization core for the Bodu System.Text.Json-shaped text serializers (Bencode, TOML, YAML, Delimited, DotEnv, INI). It carries the format-agnostic pieces those libraries have in common: the declarative attribute family, the shaping enums, the serialization callback interfaces, and the property naming policies — all in the single Bodu.Text.Serialization namespace, so one [PropertyName] or NamingPolicy.CamelCase works identically across every format.

Installation

dotnet add package Bodu.Text.Serialization

Targets net8.0. You rarely install this package directly — each per-format serializer package references it, so it arrives transitively with Bodu.Text.Toml, Bodu.Text.Yaml, and their siblings. Reference it directly only when a model assembly should carry the mapping attributes without depending on any specific format.

API shape

Type(s) Role
[PropertyName] / [Ignore] / [Converter] / [PropertyOrder] / [Required] / [Include] / [ExtensionData] / [Constructor] / [ObjectCreationHandling] / [NamingPolicy] / [UnmappedMemberHandling] / [StringEnumMemberName] The declarative member-shaping attribute family, rooted at SerializationAttribute. Applied once on a model, honored by every Bodu text serializer.
IgnoreCondition, ObjectCreationHandling, UnmappedMemberHandling, KnownNamingPolicy The shaping enums the attributes and per-format options share (conditional omission, replace-vs-populate on read, unknown-key policy, attribute-addressable naming policies).
IOnSerializing / IOnSerialized / IOnDeserializing / IOnDeserialized Serialization lifecycle callbacks a model opts into by implementing the interface.
NamingPolicy (with CamelCase, SnakeCaseLower / SnakeCaseUpper, KebabCaseLower / KebabCaseUpper) Property naming policies converting CLR member names to wire keys.
using Bodu.Text.Serialization;

public sealed class Profile
{
    [PropertyName("display-name")]
    public string DisplayName { get; set; } = "Ada";

    [Ignore(Condition = IgnoreCondition.WhenWritingNull)]
    public string? Comment { get; set; }
}

// The same model serializes consistently through any sibling:
//   TomlSerializer.Serialize(profile)   ->  display-name = "Ada"
//   YamlSerializer.Serialize(profile)   ->  display-name: Ada

Shared engine source

Beyond the compiled assembly, the package's repository folder also hosts the shared/** engine source — the metadata resolver (MetadataResolver / TypeMetadata / PropertyMetadata), the structural converter factories (nullable / dictionary / collection / object), and the converter pipeline — which the per-format packages compile into themselves under their format symbol (BENCODE, TOML, YAML, …). That source is a repository-level implementation detail: it ships inside each format assembly, not in this package, so this package stays a small attribute/contract library whose only dependency is Bodu.Core.

Testing

The package has no test project of its own: every public type is exercised end to end by the consumer test suites (Bodu.Text.Bencode.Test, Bodu.Text.Toml.Test, Bodu.Text.Yaml.Test, Bodu.Text.Delimited.Test, Bodu.Text.DotEnv.Test, Bodu.Text.Ini.Test), which validate the attribute family, callbacks, and naming policies against each format's wire form.

License

MIT. © Bodu Pty. Ltd.

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 is compatible.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (6)

Showing the top 5 NuGet packages that depend on Bodu.Text.Serialization:

Package Downloads
Bodu.Text.Toml

A self-contained TOML (v1.0.0 / v1.1.0) library for .NET 8, shaped after System.Text.Json and matching the sibling Bodu.Text.Bencode surface: the TomlSerializer POCO mapper (converters, the full attribute family, naming policies, callbacks), the forward-only ref-struct Utf8TomlReader/Utf8TomlWriter token surface, a mutable TomlNode DOM, and a read-only TomlDocument DOM. Adds native float, boolean, and the four RFC 3339 date-time kinds.

Bodu.Text.Delimited

A self-contained delimited-text (RFC 4180 CSV/TSV) library for .NET 8, shaped after System.Text.Json and matching the sibling Bodu.Text.Toml surface: the forward-only ref-struct Utf8DelimitedReader/Utf8DelimitedWriter token surface over UTF-8, a mutable DelimitedNode DOM, a read-only DelimitedDocument DOM, and the DelimitedSerializer record mapper with an IAsyncEnumerable streaming surface. A delimited document is an array of records.

Bodu.Text.Ini

A self-contained INI library for .NET 8, shaped after System.Text.Json and matching the sibling Bodu.Text.Toml surface: the forward-only ref-struct Utf8IniReader/Utf8IniWriter token surface over UTF-8, a mutable IniNode DOM, a read-only IniDocument DOM, and the IniSerializer POCO mapper. INI models a two-level object-of-objects (sections then string keys).

Bodu.Text.Bencode

A self-contained Bencode (BEP 3) library for .NET 8, shaped after System.Text.Json: the BencodeSerializer POCO mapper (converters, the full attribute family, naming policies, callbacks), the forward-only ref-struct Utf8BencodeReader/Utf8BencodeWriter token surface, a mutable BencodeNode DOM, and a read-only BencodeDocument DOM. Reads and writes canonical BEP 3 (ascending unique dictionary keys, single root) and can return a value's exact encoded slice for info-hash scenarios.

Bodu.Text.DotEnv

A self-contained DotEnv library for .NET 8, shaped after System.Text.Json and matching the sibling Bodu.Text.Toml surface: the forward-only ref-struct Utf8DotEnvReader/Utf8DotEnvWriter token surface over UTF-8, a mutable DotEnvNode DOM, a read-only DotEnvDocument DOM, and the DotEnvSerializer POCO mapper. DotEnv models a flat, ordered object of string-valued keys with export prefixes and comment trivia.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.0 104 9/24/2026
0.7.0 169 9/24/2026
0.6.0 107 9/24/2026
0.5.0 96 9/23/2026