Naive.Serializer
1.0.3
There is a newer version of this package available.
See the version list below for details.
See the version list below for details.
dotnet add package Naive.Serializer --version 1.0.3
NuGet\Install-Package Naive.Serializer -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="Naive.Serializer" Version="1.0.3" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add Naive.Serializer --version 1.0.3
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: Naive.Serializer, 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 Naive.Serializer as a Cake Addin #addin nuget:?package=Naive.Serializer&version=1.0.3 // Install Naive.Serializer as a Cake Tool #tool nuget:?package=Naive.Serializer&version=1.0.3
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
DataContract
attributes. - Dicent performance and payload size.
Plans:
- Loop reference detection.
- 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
IEnumerable
then 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. |
.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.
* Detecting reference loops.
* Small deserialization speed improvements.