Tizzani.QueryStringSerializer 1.0.3

There is a newer version of this package available.
See the version list below for details.
dotnet add package Tizzani.QueryStringSerializer --version 1.0.3
NuGet\Install-Package Tizzani.QueryStringSerializer -Version 1.0.3
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="Tizzani.QueryStringSerializer" Version="1.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Tizzani.QueryStringSerializer --version 1.0.3
#r "nuget: Tizzani.QueryStringSerializer, 1.0.3"
#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.
// Install Tizzani.QueryStringSerializer as a Cake Addin
#addin nuget:?package=Tizzani.QueryStringSerializer&version=1.0.3

// Install Tizzani.QueryStringSerializer as a Cake Tool
#tool nuget:?package=Tizzani.QueryStringSerializer&version=1.0.3

Query String Serializer

Tizzani.QueryStringSerializer provides methods for serializing & deserializing objects as URL-encoded query strings.

Example Usage

Given the following classes:

class Person
{
    public Name Name { get; set; }
    public int Age { get; set; }
    public List<string> FavoriteWebsites { get; set; } = new();
}

record Name(string Given, string? Middle, string Family);

Serialization

var person = new Person() {
    Name = new Name("Some", null, "Person"),
    Age = 25,
    FavoriteWebsites = new List<string>() { "https://github.com/erinnmclaughlin" }
}

// get a plain query string, suitable for use in a POST request body:
var personQs = QueryStringSerializer.Serialize(person);

// get the query string appended to an existing URL:
var personUrl = QueryStringSerializer.Serialize(person, "https://mysite.com/directory/search");

Deserialization

// also works if personQs has a leading "?"
var personQs = "Name.Given=Some&Name.Family=Person&Age=25&FavoriteWebsites=https%3A%2F%2Fgithub.com%2Ferinnmclaughlin";

var person = QueryStringSerializer.Deserialize(personQs);

Other Features

  • Enums are supported
  • Enums are serialized as strings by default, but can be configured to serialize as ints by using QueryStringSerializerOptions
  • Many basic collection types (such as IList, System.Arrray, ICollection) are supported
  • class, record, struct and readonly struct are all supported

Known Limitations

  • Collections of objects are not yet supported; only of primitives
  • Dictionaries are not yet supported
Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (1)

Showing the top 1 NuGet packages that depend on Tizzani.QueryStringSerializer:

Package Downloads
Tizzani.QueryStringSerializer.Blazor

Package Description

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last updated
8.0.0 132 1/1/2024
1.0.3 507 5/6/2022
1.0.2 477 5/6/2022
1.0.1 489 5/6/2022
1.0.0 394 5/5/2022