ToonNet.Extensions.Json
1.4.0
dotnet add package ToonNet.Extensions.Json --version 1.4.0
NuGet\Install-Package ToonNet.Extensions.Json -Version 1.4.0
<PackageReference Include="ToonNet.Extensions.Json" Version="1.4.0" />
<PackageVersion Include="ToonNet.Extensions.Json" Version="1.4.0" />
<PackageReference Include="ToonNet.Extensions.Json" />
paket add ToonNet.Extensions.Json --version 1.4.0
#r "nuget: ToonNet.Extensions.Json, 1.4.0"
#:package ToonNet.Extensions.Json@1.4.0
#addin nuget:?package=ToonNet.Extensions.Json&version=1.4.0
#tool nuget:?package=ToonNet.Extensions.Json&version=1.4.0
ToonNet.Extensions.Json
JSON โ TOON format conversion extension
๐ฆ What is ToonNet.Extensions.Json?
ToonNet.Extensions.Json provides seamless bidirectional conversion between JSON and TOON formats:
- โ JSON โ TOON - Convert JSON strings/documents to TOON format
- โ TOON โ JSON - Convert TOON strings/documents to JSON format
- โ System.Text.Json integration - Familiar API patterns
- โ Preserves structure - Round-trip conversions maintain data integrity
- โ Developer-friendly - Extension methods on ToonSerializer
Perfect for:
- ๐ค AI/LLM Applications - Convert JSON APIs to token-efficient TOON
- ๐ Data Migration - Transform existing JSON data to TOON format
- ๐ Interoperability - Work with JSON-based systems
- ๐ API Integration - Accept JSON, process as TOON, return JSON
๐ Quick Start
Installation
# Core package (required)
dotnet add package ToonNet.Core
# JSON extension
dotnet add package ToonNet.Extensions.Json
Basic Usage - String Conversion
using ToonNet.Core.Serialization;
using ToonNet.Extensions.Json;
// JSON โ TOON string conversion
string jsonString = """
{
"name": "Alice",
"age": 30,
"hobbies": ["reading", "coding"]
}
""";
string toonString = ToonConvert.FromJson(jsonString);
// Output (TOON format):
// name: Alice
// age: 30
// hobbies[2]: reading, coding
// TOON โ JSON string conversion
string jsonBack = ToonConvert.ToJson(toonString);
Object Serialization via JSON
using ToonNet.Extensions.Json;
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public List<string> Hobbies { get; set; }
}
var person = new Person
{
Name = "Bob",
Age = 25,
Hobbies = new List<string> { "gaming", "music" }
};
// Serialize C# object to JSON
string json = ToonConvert.SerializeToJson(person);
// Deserialize JSON to C# object
var personBack = ToonConvert.DeserializeFromJson<Person>(json);
// One-step: JSON string โ C# object via TOON
var person2 = ToonConvert.ParseJson<Person>(jsonString);
๐ API Reference
String Format Conversion
// JSON string โ TOON string
string toon = ToonConvert.FromJson(jsonString);
string toon = ToonConvert.FromJson(jsonString, options); // ToonOptions
// TOON string โ JSON string
string json = ToonConvert.ToJson(toonString);
string json = ToonConvert.ToJson(toonString, writerOptions); // JsonWriterOptions
Document Conversion (Low-level)
using ToonNet.Extensions.Json;
// JSON string โ ToonDocument
ToonDocument doc = ToonJsonConverter.FromJson(jsonString);
// JsonElement โ ToonDocument
ToonDocument doc = ToonJsonConverter.FromJson(jsonElement);
// ToonDocument โ JSON string
string json = ToonJsonConverter.ToJson(document);
string json = ToonJsonConverter.ToJson(document, writerOptions); // JsonWriterOptions
// ToonValue โ JSON string
string json = ToonJsonConverter.ToJson(toonValue);
string json = ToonJsonConverter.ToJson(toonValue, writerOptions); // JsonWriterOptions
Object Serialization
// C# object โ JSON string
string json = ToonConvert.SerializeToJson<T>(obj);
string json = ToonConvert.SerializeToJson<T>(obj, options); // JsonSerializerOptions
// JSON string โ C# object
T obj = ToonConvert.DeserializeFromJson<T>(jsonString);
T obj = ToonConvert.DeserializeFromJson<T>(jsonString, options); // JsonSerializerOptions
// JSON string โ TOON โ C# object (one step)
T obj = ToonConvert.ParseJson<T>(jsonString);
T obj = ToonConvert.ParseJson<T>(jsonString, options); // ToonSerializerOptions
๐ฏ Real-World Examples
Example 1: AI/LLM Token Optimization
using ToonNet.Core.Serialization;
using ToonNet.Extensions.Json;
// Receive JSON from API
string apiResponse = await httpClient.GetStringAsync("/api/products");
// Convert to TOON (fewer tokens for LLM)
string toonData = ToonConvert.FromJson(apiResponse);
// Use in LLM prompt
string prompt = $"""
You are a product analyst. Here is the product catalog:
{toonData}
Recommend the best products for a software developer.
""";
// TOON is ~40% fewer tokens than JSON!
Example 2: Data Migration
// Load existing JSON configuration
string jsonConfig = File.ReadAllText("appsettings.json");
// Convert to TOON format
string toonConfig = ToonConvert.FromJson(jsonConfig);
// Save as TOON (more human-readable)
File.WriteAllText("appsettings.toon", toonConfig);
// Later: Load TOON and convert back if needed
string toonContent = File.ReadAllText("appsettings.toon");
var config = ToonSerializer.Deserialize<AppSettings>(toonContent);
Example 3: Roundtrip Verification
// Original JSON
string originalJson = """{"discount": 35.00, "active": true}""";
// JSON โ TOON โ JSON
string toonString = ToonConvert.FromJson(originalJson);
string roundtripJson = ToonConvert.ToJson(toonString);
// Normalize both for comparison
var original = JsonSerializer.Deserialize<object>(originalJson);
var roundtrip = JsonSerializer.Deserialize<object>(roundtripJson);
// Semantic equivalence preserved (format may differ)
// 35.00 โ 35 is semantically equal (JSON spec compliant)
๐ Format Conversion Behavior
Type Mapping
| JSON Type | TOON Type | Notes |
|---|---|---|
object |
ToonObject |
Key-value pairs |
array |
ToonArray |
Ordered items |
string |
ToonString |
UTF-8 text |
number |
ToonNumber |
Float64 precision |
true/false |
ToonBoolean |
Boolean values |
null |
ToonNull |
Null/undefined |
Semantic Equivalence
Important: Format conversions preserve semantic equivalence, not exact formatting:
// JSON: {"price": 35.00}
// TOON: price: 35.00
// JSON (roundtrip): {"price": 35} โ Format differs, value identical
This is standard behavior across all serialization libraries (System.Text.Json, Newtonsoft.Json). See Roundtrip Guarantees for details.
๐ Thread-Safety
ToonSerializerand JSON conversion methods are safe to call concurrently across threads.- Shared metadata/name caches use
ConcurrentDictionaryfor concurrent access. - Cache entries are created on demand and retained for the process lifetime (no eviction).
- Do not mutate a single
ToonSerializerOptionsinstance concurrently across threads.
๐ Related Packages
Core:
ToonNet.Core- Core serialization (required)
Other Extensions:
ToonNet.Extensions.Yaml- YAML โ TOON conversion
Web Integration:
ToonNet.AspNetCore- ASP.NET Core middlewareToonNet.AspNetCore.Mvc- MVC formatters
Development:
ToonNet.Demo- Sample applications with JSON examplesToonNet.Tests- JSON conversion test suite
๐ Documentation
- Main Documentation - Complete ToonNet guide
- API Guide - Detailed API reference
- Samples - Real-world JSON examples
๐งช Testing
# Run JSON conversion tests
cd tests/ToonNet.Tests
dotnet test --filter "FullyQualifiedName~ToonJsonConverter"
# Run specific test categories
dotnet test --filter "Category=JsonConversion"
๐ License
MIT License - See LICENSE file for details.
๐ค Contributing
Contributions welcome! Please read CONTRIBUTING.md first.
Part of the ToonNet serialization library family.
| Product | Versions 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 was computed. 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. |
-
net8.0
- ToonNet.Core (>= 1.4.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
v1.4.0: Updated to support ToonNet.Core 1.4.0 streaming features.