Skip to content

Commit 11fe4fd

Browse files
author
Oren (electricessence)
committed
Simplified API and tested.
1 parent ecb984f commit 11fe4fd

6 files changed

Lines changed: 38 additions & 16 deletions

File tree

Open.Serialization.Json.Newtonsoft/JsonSerializerFactory.cs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,11 @@ public JsonSerializerFactory(JsonSerializerSettings defaultOptions = null)
1717
JsonSerializerInternal _default;
1818
JsonSerializerInternal Default => LazyInitializer.EnsureInitialized(ref _default, () => new JsonSerializerInternal(_settings));
1919

20-
protected override SerializerBase GetDeserializerInternal(bool caseSensitive)
21-
=> caseSensitive
22-
? throw new NotSupportedException("Newtonsoft does not support case-sensitive deserialization.")
23-
: Default;
24-
25-
protected override SerializerBase GetSerializerInternal(IJsonSerializationOptions options)
20+
public override IJsonSerializer GetSerializer(IJsonSerializationOptions options = null, bool caseSensitive = false)
2621
{
22+
if (caseSensitive)
23+
throw new NotSupportedException("Newtonsoft does not support case-sensitive deserialization.");
24+
2725
if (options == null) return Default;
2826

2927
if (options.CamelCaseKeys && !options.CamelCaseProperties)

Open.Serialization.Json.Newtonsoft/Open.Serialization.Json.Newtonsoft.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Part of the "Open" set of libraries.
2222

2323
<ItemGroup>
2424
<PackageReference Include="Newtonsoft.Json" Version="11.0.1" />
25-
<PackageReference Include="Open.Serialization.Json" Version="1.0.1" />
25+
<PackageReference Include="Open.Serialization.Json" Version="1.2.0" />
2626
</ItemGroup>
2727

2828
</Project>
Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
using System.IO;
22
using System.Text.Json;
3+
using System.Threading;
34
using System.Threading.Tasks;
45

56
namespace Open.Serialization.Json.System
67
{
7-
internal class JsonSerializerInternal : JsonSerializerBase
8+
internal class JsonSerializerInternal : JsonSerializerBase, IJsonSerializer
89
{
910
readonly JsonSerializerOptions _options;
1011
internal JsonSerializerInternal(JsonSerializerOptions options)
@@ -15,18 +16,41 @@ internal JsonSerializerInternal(JsonSerializerOptions options)
1516
public override T Deserialize<T>(string value)
1617
=> JsonSerializer.Deserialize<T>(value, _options);
1718

19+
public new Task SerializeAsync<T>(Stream stream, T item, CancellationToken cancellationToken = default)
20+
=> JsonSerializer.SerializeAsync(stream, item, _options, cancellationToken);
21+
22+
ValueTask ISerializeAsync.SerializeAsync<T>(Stream stream, T item, CancellationToken cancellationToken)
23+
=> new ValueTask(SerializeAsync(stream, item, cancellationToken));
24+
1825
public override string Serialize<T>(T item)
1926
=> JsonSerializer.Serialize(item, _options);
2027

21-
public override ValueTask<T> DeserializeAsync<T>(Stream stream)
28+
public override ValueTask<T> DeserializeAsync<T>(Stream stream, CancellationToken cancellationToken = default)
2229
=> JsonSerializer.DeserializeAsync<T>(stream, _options);
2330
}
2431

25-
internal class JsonSerializerInternal<T> : Serializer<T>, IJsonSerializer<T>
32+
33+
internal class JsonSerializerInternal<T> : JsonSerializerBase<T>, IJsonSerializer<T>
2634
{
35+
readonly JsonSerializerOptions _options;
2736
internal JsonSerializerInternal(JsonSerializerOptions options)
28-
:base(options.GetDeserialize<T>(), options.GetSerialize<T>())
2937
{
38+
_options = options;
3039
}
40+
41+
public override T Deserialize(string value)
42+
=> JsonSerializer.Deserialize<T>(value, _options);
43+
44+
public new Task SerializeAsync(Stream stream, T item, CancellationToken cancellationToken = default)
45+
=> JsonSerializer.SerializeAsync(stream, item, _options, cancellationToken);
46+
47+
ValueTask ISerializeAsync<T>.SerializeAsync(Stream stream, T item, CancellationToken cancellationToken)
48+
=> new ValueTask(SerializeAsync(stream, item, cancellationToken));
49+
50+
public override string Serialize(T item)
51+
=> JsonSerializer.Serialize(item, _options);
52+
53+
public override ValueTask<T> DeserializeAsync(Stream stream, CancellationToken cancellationToken = default)
54+
=> JsonSerializer.DeserializeAsync<T>(stream, _options);
3155
}
3256
}

Open.Serialization.Json.System/Open.Serialization.Json.System.csproj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ Part of the "Open" set of libraries.
2121
</PropertyGroup>
2222

2323
<ItemGroup>
24-
<PackageReference Include="Open.Serialization.Json" Version="1.1.2" />
24+
<PackageReference Include="Open.Serialization.Json" Version="1.2.0" />
2525
<PackageReference Include="System.Text.Json" Version="4.6.0" />
2626
</ItemGroup>
2727

Open.Serialization.Json/Open.Serialization.Json.csproj

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,11 @@ Part of the "Open" set of libraries.
1717
<RepositoryUrl>https://github.com/electricessence/Open.Serialization</RepositoryUrl>
1818
<RepositoryType>git</RepositoryType>
1919
<PackageTags>serialization json</PackageTags>
20-
<Version>1.1.2</Version>
20+
<Version>1.2.0</Version>
2121
</PropertyGroup>
2222

2323
<ItemGroup>
24-
<PackageReference Include="Open.Serialization" Version="1.1.2" />
24+
<PackageReference Include="Open.Serialization" Version="1.2.0" />
2525
</ItemGroup>
2626

2727
</Project>

Open.Serialization.Tests/ParityTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,8 @@ static void CompareFactories(IJsonSerializerFactory expectedFactory, IJsonSerial
3333
Assert.Equal(expectedSerializer.Serialize(SampleModel.DecimalLookup), actualSerializer.Serialize(SampleModel.DecimalLookup));
3434
Assert.Equal(expectedSerializer.Serialize(SampleModel.DoubleLookup), actualSerializer.Serialize(SampleModel.DoubleLookup));
3535

36-
expectedFactory.GetDeserializer().Deserialize<SampleModel>(actualSerializer.Serialize(SampleModel.Instance));
37-
actualFactory.GetDeserializer().Deserialize<SampleModel>(expectedSerializer.Serialize(SampleModel.Instance));
36+
expectedFactory.GetSerializer().Deserialize<SampleModel>(actualSerializer.Serialize(SampleModel.Instance));
37+
actualFactory.GetSerializer().Deserialize<SampleModel>(expectedSerializer.Serialize(SampleModel.Instance));
3838
}
3939
}
4040
}

0 commit comments

Comments
 (0)