Naive.Serializer
1.0.4
dotnet add package Naive.Serializer --version 1.0.4
NuGet\Install-Package Naive.Serializer -Version 1.0.4
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="Naive.Serializer" Version="1.0.4" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Naive.Serializer" Version="1.0.4" />
<PackageReference Include="Naive.Serializer" />
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 Naive.Serializer --version 1.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Naive.Serializer, 1.0.4"
#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 Naive.Serializer@1.0.4
#: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=Naive.Serializer&version=1.0.4
#tool nuget:?package=Naive.Serializer&version=1.0.4
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
NaiveSerializer
.NET Standard binary serialization library.
Features:
- Doesn't requere changing of serialized class or adding anything.
- Resilient to changes in serialized/deserialized classes.
- Deserialize unknown payload.
- Respects
DataContractattributes. - Dicent performance and payload size.
Plans:
- Speed improvements on large object lists.
Usage
using var stream = new MemoryStream();
NaiveSerializer.Serialize(value, stream);
stream.Position = 0;
result = NaiveSerializer.Deserialize(stream, value.GetType());
// or
var bytes = NaiveSerializer.Serialize(value);
result = NaiveSerializer.Deserialize(bytes, value.GetType());
// or
result = NaiveSerializer.Deserialize<ValueType>(bytes);
// or unknown payload to object/dictionary
result = NaiveSerializer.Deserialize(bytes);
Supported Types
- All simple types and structs from
System. IDictionary,IList, anyIEnumerable.- Classes and structs with parameterless constructor.
- If deserializing class property type is an interface
IEnumerablethen deserialize it asArray<T>. - If deserializing unknown payload then deserialize objects as
Dictionary<string, object>and enumerables as arrays.
Installation
NuGet package is here.
> dotnet add package Naive.Serializer
Performance
Couple of times better than NewtonJson, a bit slower than extremely fast binary serializer Bois.
Benchmark results are here.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. 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. |
| .NET Core | netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.1 is compatible. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.1
- No dependencies.
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Naive.Serializer:
| Package | Downloads |
|---|---|
|
NaiveMq.Client
NaiveMq message broker client library. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Adding maximum serialization depth option.
Change ignore reference loop boolean parameter to enum with additional Serialize option.