Skip to content

Releases: morgankenyon/Ferris.Json

0.4.0 - More Json Upgrades

11 Jan 02:24

Choose a tag to compare

Pre-release

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

08 Jan 02:32

Choose a tag to compare

Pre-release

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

26 Dec 17:03

Choose a tag to compare

When deserialization a json string, the library now correctly nested objects correctly.

0.1.1 - Updating documentation

25 Dec 20:55

Choose a tag to compare

Pre-release

My previous readme code references wouldn't compile to incorrect code reference. Fixing that now.

0.1.0 - Initial release

25 Dec 20:50

Choose a tag to compare

Pre-release

I've gotten simple json serialization/deserialization working. It's not ready for any real usage, but wanted to push it out there.