Skip to content

Commit 447b058

Browse files
committed
Resolving merge issues with serialization settings
1 parent 2230c03 commit 447b058

File tree

3 files changed

+23
-18
lines changed

3 files changed

+23
-18
lines changed

Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension/CosmosDictionaryDataItem.cs

+2-2
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ public IEnumerable<string> GetFieldNames()
3232
{
3333
if (value is JObject element)
3434
{
35-
return new CosmosDictionaryDataItem(element.ToObject<IDictionary<string, object?>>(JsonSerializer.Create(RawJsonCosmosSerializer.DefaultSettings))
35+
return new CosmosDictionaryDataItem(element.ToObject<IDictionary<string, object?>>(JsonSerializer.Create(RawJsonCosmosSerializer.GetDefaultSettings()))
3636
.ToDictionary(k => k.Key, v => v.Value));
3737
}
3838
if (value is JArray array)
3939
{
40-
return array.ToObject<List<object?>>(JsonSerializer.Create(RawJsonCosmosSerializer.DefaultSettings))
40+
return array.ToObject<List<object?>>(JsonSerializer.Create(RawJsonCosmosSerializer.GetDefaultSettings()))
4141
.Select(GetChildObject).ToList();
4242
}
4343

Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension/CosmosExtensionServices.cs

+9-9
Original file line numberDiff line numberDiff line change
@@ -15,23 +15,23 @@ public static CosmosClient CreateClient(CosmosSettingsBase settings, string disp
1515
{
1616
string userAgentString = CreateUserAgentString(displayName, sourceDisplayName);
1717

18+
var cosmosSerializer = new RawJsonCosmosSerializer();
19+
if (settings is CosmosSinkSettings sinkSettings)
20+
{
21+
cosmosSerializer.SerializerSettings.NullValueHandling = sinkSettings.IgnoreNullValues
22+
? Newtonsoft.Json.NullValueHandling.Ignore
23+
: Newtonsoft.Json.NullValueHandling.Include;
24+
}
25+
1826
var clientOptions = new CosmosClientOptions
1927
{
2028
ConnectionMode = settings.ConnectionMode,
2129
ApplicationName = userAgentString,
2230
AllowBulkExecution = true,
2331
EnableContentResponseOnWrite = false,
24-
Serializer = new RawJsonCosmosSerializer(),
32+
Serializer = cosmosSerializer,
2533
};
2634

27-
if (settings is CosmosSinkSettings sinkSettings)
28-
{
29-
clientOptions.SerializerOptions = new CosmosSerializationOptions
30-
{
31-
IgnoreNullValues = sinkSettings.IgnoreNullValues
32-
};
33-
}
34-
3535
CosmosClient? cosmosClient;
3636
if (settings.UseRbacAuth)
3737
{

Extensions/Cosmos/Cosmos.DataTransfer.CosmosExtension/RawJsonCosmosSerializer.cs

+12-7
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,18 @@ namespace Cosmos.DataTransfer.CosmosExtension;
1212
/// </remarks>
1313
public class RawJsonCosmosSerializer : CosmosSerializer
1414
{
15-
public static readonly JsonSerializerSettings DefaultSettings = new()
16-
{
17-
DateParseHandling = DateParseHandling.None,
18-
MetadataPropertyHandling = MetadataPropertyHandling.Ignore
19-
};
15+
private static readonly Encoding DefaultEncoding = new UTF8Encoding(false, true);
16+
17+
public static JsonSerializerSettings GetDefaultSettings() =>
18+
new()
19+
{
20+
DateParseHandling = DateParseHandling.None,
21+
MetadataPropertyHandling = MetadataPropertyHandling.Ignore,
22+
ContractResolver = null,
23+
MaxDepth = 64,
24+
};
2025

21-
public JsonSerializerSettings SerializerSettings { get; set; } = DefaultSettings;
26+
public JsonSerializerSettings SerializerSettings { get; } = GetDefaultSettings();
2227

2328
public override T FromStream<T>(Stream stream)
2429
{
@@ -39,7 +44,7 @@ public override T FromStream<T>(Stream stream)
3944
public override Stream ToStream<T>(T input)
4045
{
4146
var memoryStream = new MemoryStream();
42-
using (var streamWriter = new StreamWriter(memoryStream, Encoding.UTF8, leaveOpen: true))
47+
using (var streamWriter = new StreamWriter(memoryStream, DefaultEncoding, bufferSize: 1024, leaveOpen: true))
4348
{
4449
using (var jsonWriter = new JsonTextWriter(streamWriter))
4550
{

0 commit comments

Comments
 (0)