@@ -33,14 +33,19 @@ namespace Npgsql.Json.NET
3333{
3434 public class JsonbHandlerFactory : NpgsqlTypeHandlerFactory < string >
3535 {
36+ readonly JsonSerializerSettings _settings ;
37+
38+ public JsonbHandlerFactory ( JsonSerializerSettings settings ) => _settings = settings ;
39+
3640 protected override NpgsqlTypeHandler < string > Create ( NpgsqlConnection conn )
37- => new JsonbHandler ( conn ) ;
41+ => new JsonbHandler ( conn , _settings ) ;
3842 }
3943
4044 class JsonbHandler : Npgsql . TypeHandlers . JsonbHandler
4145 {
42- public JsonbHandler ( NpgsqlConnection connection )
43- : base ( connection ) { }
46+ readonly JsonSerializerSettings _settings ;
47+
48+ public JsonbHandler ( NpgsqlConnection connection , JsonSerializerSettings settings ) : base ( connection ) => _settings = settings ;
4449
4550 protected override async ValueTask < T > Read < T > ( NpgsqlReadBuffer buf , int len , bool async , FieldDescription fieldDescription = null )
4651 {
@@ -49,7 +54,7 @@ protected override async ValueTask<T> Read<T>(NpgsqlReadBuffer buf, int len, boo
4954 return ( T ) ( object ) s ;
5055 try
5156 {
52- return JsonConvert . DeserializeObject < T > ( s ) ;
57+ return JsonConvert . DeserializeObject < T > ( s , _settings ) ;
5358 }
5459 catch ( Exception e )
5560 {
@@ -73,7 +78,7 @@ protected override int ValidateObjectAndGetLength(object value, ref NpgsqlLength
7378 var s = value as string ;
7479 if ( s == null )
7580 {
76- s = JsonConvert . SerializeObject ( value ) ;
81+ s = JsonConvert . SerializeObject ( value , _settings ) ;
7782 if ( parameter != null )
7883 parameter . ConvertedValue = s ;
7984 }
@@ -84,7 +89,7 @@ protected override Task WriteObjectWithLength(object value, NpgsqlWriteBuffer bu
8489 {
8590 if ( parameter ? . ConvertedValue != null )
8691 value = parameter . ConvertedValue ;
87- var s = value as string ?? JsonConvert . SerializeObject ( value ) ;
92+ var s = value as string ?? JsonConvert . SerializeObject ( value , _settings ) ;
8893 return base . WriteObjectWithLength ( s , buf , lengthCache , parameter , async) ;
8994 }
9095 }
0 commit comments