Wivuu.JsonPolymorphism
JsonSubTypes
Wivuu.JsonPolymorphism | JsonSubTypes | |
---|---|---|
1 | 4 | |
24 | 398 | |
- | - | |
0.0 | 3.8 | |
over 1 year ago | about 2 months ago | |
C# | C# | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Wivuu.JsonPolymorphism
-
What is your preferred way of creating application specific files for a local application?
There is a System.Text.Json compatible library https://github.com/wivuu/Wivuu.JsonPolymorphism that could do this. Does that work for you?
JsonSubTypes
- .Net 6 - Rest Api is deserializing property of "object" type to JsonElement type (System.Text.Json)
-
An API receives different message types
If messages are arriving as Json you can use JsonSubTypes to deserialize to different DTOs based on the UUIDs (https://github.com/manuc66/JsonSubTypes) and then use the visitor pattern to dispatch the DTOs to the correct method.
-
What is your preferred way of creating application specific files for a local application?
Personally I've had good success with JsonSubTypes for deserializing discriminated unions from JSON. It'll serialize stuff into the right type, and then you just need a switch statement to typecast it afterwards.
-
How to create a data-driven software product that indicates pre-coded functionality?
There is a small use case that I consider valid for this. It would be for determining a set of pre-defined behaviors to make available to definitions of entities in a game. And the json data would not be coming from external sources, it would be tightly controlled by me as the developer. The response you made to the other comment on my post shared a link that said the practice shouldn't be done with untrusted data, and there would be no untrusted data since there'd be no external data. The article also mentions to restrict the types that can be deserialized, and that is definitely possible. The architecture pattern for this is ECS (Entity Component System) and the data-drive portion might have been a mis-naming of my post, it's more of a lot of the design of entities and components is stored in data files, and there are a few cases where I will want to associate certain functionality in the code with these data entity definitions. No operating system level functionality would be exposed. I've even been referred to a library available via nuget that will allow for what I'm attempting to do: https://github.com/manuc66/JsonSubTypes
What are some alternatives?
Json.NET - Json.NET is a popular high-performance JSON framework for .NET
MessagePack for C# (.NET, .NET Core, Unity, Xamarin) - Extremely Fast MessagePack Serializer for C#(.NET, .NET Core, Unity, Xamarin). / msgpack.org[C#]
JsonKnownTypes - Simple way to serialize and deserialize polymorphic types for Json.NET
Utf8Json - Definitely Fastest and Zero Allocation JSON Serializer for C#(NET, .NET Core, Unity, Xamarin).
Wire - Binary serializer for POCO objects
Protobuf - Protocol Buffers - Google's data interchange format
Bois - Salar.Bois is a compact, fast and powerful binary serializer for .NET Framework. With Bois you can serialize your existing objects with almost no change.
Ceras - Universal binary serializer for a wide variety of scenarios https://discord.gg/FGaCX4c
Jil - Fast .NET JSON (De)Serializer, Built On Sigil
TcpClientIo - TcpClientIo Wrapper of TcpClient what help focus on WHAT you transfer over TCP, not HOW
LitJSON - JSON library for the .Net framework
Bond - Bond is a cross-platform framework for working with schematized data. It supports cross-language de/serialization and powerful generic mechanisms for efficiently manipulating data. Bond is broadly used at Microsoft in high scale services.