Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/ProwlEngine/Prowl.Echo/llms.txt

Use this file to discover all available pages before exploring further.

Prowl.Echo is a high-performance .NET serialization library that creates an intermediate EchoObject representation of your data. This graph can be inspected, queried, and modified before being written to binary, text, JSON, BSON, YAML, or XML — giving you full control over the serialization pipeline.

Quickstart

Serialize your first object in under two minutes

Installation

Add Prowl.Echo to your .NET project via NuGet

Source Generation

Zero-reflection, compile-time serialization with [GenerateSerializer]

API Reference

Complete reference for Serializer, EchoObject, and all interfaces

Why Prowl.Echo?

Echo serializes objects to an in-memory EchoObject graph first, so you can inspect and modify data before committing it to any output format. The source generator eliminates reflection overhead entirely, producing serialization code at compile time.

Faster than STJ

Outperforms System.Text.Json and Newtonsoft.Json across serialize, deserialize, and round-trip benchmarks

Complex Graph Support

Handles circular references, polymorphism, anonymous types, and deeply nested objects

Multiple Formats

Write to Echo binary, Echo text, JSON, BSON, YAML, or XML with a single API

Get Started

1

Install via NuGet

Add the Prowl.Echo package to your project:
dotnet add package Prowl.Echo
2

Serialize an object

Use Serializer.Serialize to convert any object to an EchoObject:
using Prowl.Echo;

var player = new Player { Name = "Hero", Health = 100 };
EchoObject echo = Serializer.Serialize(player);
3

Write to your preferred format

Save to binary, text, or any supported format:
// Echo binary (fastest I/O)
echo.WriteToBinary(binaryWriter);

// Echo text (human-readable)
string text = echo.WriteToString();

// Standard formats
string json = echo.WriteToJson();
string yaml = echo.WriteToYaml();
4

Deserialize back

Reconstruct your object from any EchoObject:
var loaded = Serializer.Deserialize<Player>(echo);

Key Features

Serialization Attributes

Control serialization with [FormerlySerializedAs], [IgnoreOnNull], [SerializeIf], and more

Output Formats

Echo binary, Echo text, JSON, BSON, YAML, and XML — all from the same EchoObject

Custom Serialization

Implement ISerializable for complete control over how your types serialize

EchoObject Queries

Path-based queries, delta diffing, LINQ-style filtering on the object graph

Build docs developers (and LLMs) love