Releases: morgankenyon/Ferris.Json
Releases · morgankenyon/Ferris.Json
0.4.0 - More Json Upgrades
Releasing the 0.4.0 package.
New features:
- Supports deserializing lists of primitives
- Now supports .NetFramework via targeting .netstandard2.0
- Now supports nested strings in json values
Bug fixes:
- Better support for finding the correct end of a number
- Not pulling in the ending character "3]", now only pulling in the number.
Benchmarking:
Overall: Performance similar to 0.3.0 release.
| Method | Categories | Mean | Error | StdDev | Median | Ratio | RatioSD | Code Size | Gen0 | Allocated | Alloc Ratio |
|------------------------ |----------- |-----------:|----------:|------------:|-----------:|------:|--------:|----------:|-------:|----------:|------------:|
| FerrisSingleMapping | Single | 476.6 ns | 15.61 ns | 42.21 ns | 464.5 ns | 1.01 | 0.14 | 15,790 B | 0.1926 | 808 B | 5.32 |
| NewtonsoftSingleMapping | Single | 956.2 ns | 89.25 ns | 250.27 ns | 858.2 ns | 2.03 | 0.57 | 2,204 B | 0.9613 | 4024 B | 26.47 |
| STJSingleMapping | Single | 476.6 ns | 18.02 ns | 51.40 ns | 468.7 ns | 1.01 | 0.15 | 4,130 B | 0.0362 | 152 B | 1.00 |
| | | | | | | | | | | | |
| FerrisValueMapping | Value | 8,315.0 ns | 404.97 ns | 1,168.44 ns | 8,043.3 ns | 2.39 | 0.39 | 19,526 B | 1.8768 | 7849 B | 9.34 |
| NewtonsoftValueMapping | Value | 8,039.8 ns | 387.43 ns | 1,111.60 ns | 7,876.2 ns | 2.31 | 0.37 | 2,201 B | 1.7090 | 7168 B | 8.53 |
| TextJsonValueMapping | Value | 3,505.3 ns | 108.19 ns | 312.15 ns | 3,422.4 ns | 1.01 | 0.12 | 4,885 B | 0.1984 | 840 B | 1.00 |
| | | | | | | | | | | | |
| FerrisListMapping | List | 3,466.3 ns | 168.33 ns | 449.30 ns | 3,331.1 ns | 1.34 | 0.24 | 18,426 B | 1.2550 | 5257 B | 3.65 |
| NewtonsoftListMapping | List | 3,167.6 ns | 90.14 ns | 255.72 ns | 3,061.5 ns | 1.22 | 0.18 | 1,843 B | 1.1635 | 4872 B | 3.38 |
| TextJsonListMapping | List | 2,633.1 ns | 128.93 ns | 372.00 ns | 2,494.7 ns | 1.02 | 0.19 | 4,528 B | 0.3433 | 1440 B | 1.00 |
0.3.0 - Supporting arrays and lists
Ferris.Json now supports:
- Serializing and deserializing arrays and List.
- It can now deserialize json that has whitespace
- It can now handle null values while deserializing
BenchmarkDotnet Results for the 0.3.0 release:
| Method | Categories | Mean | Error | StdDev | Median | Ratio | RatioSD | Code Size | Gen0 | Allocated | Alloc Ratio |
|------------------------ |----------- |------------:|----------:|------------:|------------:|------:|--------:|----------:|-------:|----------:|------------:|
| FerrisSingleMapping | Single | 462.4 ns | 9.30 ns | 15.79 ns | 464.5 ns | 0.81 | 0.12 | 16,996 B | 0.1926 | 808 B | 5.32 |
| NewtonsoftSingleMapping | Single | 2,125.5 ns | 126.60 ns | 369.30 ns | 2,088.5 ns | 3.72 | 0.85 | 2,201 B | 0.9613 | 4024 B | 26.47 |
| STJSingleMapping | Single | 585.3 ns | 34.32 ns | 97.36 ns | 556.5 ns | 1.02 | 0.23 | 4,130 B | 0.0362 | 152 B | 1.00 |
| | | | | | | | | | | | |
| FerrisValueMapping | Value | 8,996.5 ns | 199.51 ns | 572.43 ns | 8,809.5 ns | 1.88 | 0.12 | 16,413 B | 2.1973 | 9250 B | 8.44 |
| NewtonsoftValueMapping | Value | 13,409.9 ns | 658.60 ns | 1,835.92 ns | 12,891.0 ns | 2.80 | 0.39 | 2,204 B | 1.8921 | 7977 B | 7.28 |
| TextJsonValueMapping | Value | 4,788.0 ns | 93.40 ns | 95.91 ns | 4,784.3 ns | 1.00 | 0.03 | 4,892 B | 0.2594 | 1096 B | 1.00 |
| | | | | | | | | | | | |
| FerrisListMapping | List | 3,972.7 ns | 126.01 ns | 371.56 ns | 3,957.0 ns | 1.76 | 0.17 | 19,355 B | 1.2550 | 5257 B | 3.65 |
| NewtonsoftListMapping | List | 3,534.4 ns | 89.41 ns | 257.97 ns | 3,450.2 ns | 1.56 | 0.12 | 1,843 B | 1.1597 | 4872 B | 3.38 |
| TextJsonListMapping | List | 2,260.4 ns | 40.31 ns | 35.73 ns | 2,267.5 ns | 1.00 | 0.02 | 4,524 B | 0.3433 | 1440 B | 1.00 |
0.2.0 - Now handling nested json properties correctly
When deserialization a json string, the library now correctly nested objects correctly.
0.1.1 - Updating documentation
My previous readme code references wouldn't compile to incorrect code reference. Fixing that now.
0.1.0 - Initial release
I've gotten simple json serialization/deserialization working. It's not ready for any real usage, but wanted to push it out there.