11namespace System.Text.Json.Serialization
22
3+ #nowarn " 44" // JsonSerializerOptions.IgnoreNullValues is obsolete for users but still relevant for converters.
4+
35open System
46open System.Collections .Generic
5- open System.Runtime .Serialization
67open System.Text .Json
78open System.Text .Json .Serialization .Helpers
89open FSharp.Reflection
@@ -74,17 +75,17 @@ type JsonUnionConverter<'T>
7475 if options.PropertyNameCaseInsensitive then
7576 let d = Dictionary( StringComparer.OrdinalIgnoreCase)
7677 fields |> Array.iteri ( fun i f ->
77- d. [ f.Name] <- struct ( i, f))
78+ d[ f.Name] <- struct ( i, f))
7879 ValueSome d
7980 else
8081 ValueNone
8182 let unwrappedRecordField =
8283 if namedFields
8384 && fields.Length = 1
84- && FSharpType.IsRecord( fields. [0 ]. Type, true )
85+ && FSharpType.IsRecord( fields[ 0 ]. Type, true )
8586 && fsOptions.UnionEncoding.HasFlag JsonUnionEncoding.UnwrapRecordCases
8687 then
87- JsonRecordConverter.CreateConverter( fields. [0 ]. Type, options, fsOptions, overrides)
88+ JsonRecordConverter.CreateConverter( fields[ 0 ]. Type, options, fsOptions, overrides)
8889 |> box
8990 :?> IRecordConverter
9091 |> ValueSome
@@ -99,8 +100,8 @@ type JsonUnionConverter<'T>
99100 fields
100101 |> Array.iteri ( fun i field ->
101102 if isSkippableType field.Type || isValueOptionType field.Type then
102- let case = FSharpType.GetUnionCases( field.Type). [ 0 ]
103- arr. [ i] <- FSharpValue.MakeUnion( case, [||])
103+ let case = FSharpType.GetUnionCases( field.Type)[ 0 ]
104+ arr[ i] <- FSharpValue.MakeUnion( case, [||])
104105 )
105106 arr
106107 {
@@ -151,7 +152,7 @@ type JsonUnionConverter<'T>
151152 | ValueNone -> ()
152153 | ValueSome fields ->
153154 for KeyValue( n, _) in fields do
154- dict. [ n] <- c
155+ dict[ n] <- c
155156 ValueSome dict
156157 else
157158 ValueNone
@@ -160,7 +161,7 @@ type JsonUnionConverter<'T>
160161 if fsOptions.UnionTagCaseInsensitive then
161162 let dict = Dictionary( StringComparer.OrdinalIgnoreCase)
162163 for c in cases do
163- dict. [ c.Name] <- c
164+ dict[ c.Name] <- c
164165 ValueSome dict
165166 else
166167 ValueNone
@@ -172,7 +173,7 @@ type JsonUnionConverter<'T>
172173 let mutable found = ValueNone
173174 let mutable i = 0
174175 while found.IsNone && i < cases.Length do
175- let case = cases. [ i]
176+ let case = cases[ i]
176177 if reader.ValueTextEquals( case.Name) then
177178 found <- ValueSome case
178179 else
@@ -195,7 +196,7 @@ type JsonUnionConverter<'T>
195196 let mutable found = ValueNone
196197 let mutable i = 0
197198 while found.IsNone && i < cases.Length do
198- let case = cases. [ i]
199+ let case = cases[ i]
199200 if case.Name.Equals( tag, StringComparison.OrdinalIgnoreCase) then
200201 found <- ValueSome case
201202 else
@@ -218,7 +219,7 @@ type JsonUnionConverter<'T>
218219 let mutable found = ValueNone
219220 let mutable i = 0
220221 while found.IsNone && i < allFields.Length do
221- let struct ( fieldName , case ) = allFields. [ i]
222+ let struct ( fieldName , case ) = allFields[ i]
222223 if reader.ValueTextEquals( fieldName) then
223224 found <- ValueSome case
224225 else
@@ -240,7 +241,7 @@ type JsonUnionConverter<'T>
240241 let mutable found = ValueNone
241242 let mutable i = 0
242243 while found.IsNone && i < case.Fields.Length do
243- let field = case.Fields. [ i]
244+ let field = case.Fields[ i]
244245 if reader.ValueTextEquals( field.Name) then
245246 found <- ValueSome ( struct ( i, field))
246247 else
@@ -263,7 +264,7 @@ type JsonUnionConverter<'T>
263264 let fieldCount = case.Fields.Length
264265 let fields = Array.copy case.DefaultFields
265266 for i in 0 .. fieldCount-1 do
266- fields. [ i] <- readField & reader case case.Fields. [ i] options
267+ fields[ i] <- readField & reader case case.Fields[ i] options
267268 readExpecting JsonTokenType.EndArray " end of array" & reader ty
268269 case.Ctor fields :?> 'T
269270
@@ -272,7 +273,6 @@ type JsonUnionConverter<'T>
272273 readFieldsAsRestOfArray & reader case options
273274
274275 let coreReadFieldsAsRestOfObject ( reader : byref < Utf8JsonReader >) ( case : Case ) ( skipFirstRead : bool ) ( options : JsonSerializerOptions ) =
275- let fieldCount = case.Fields.Length
276276 let fields = Array.copy case.DefaultFields
277277 let mutable cont = true
278278 let mutable fieldsFound = 0
@@ -286,7 +286,7 @@ type JsonUnionConverter<'T>
286286 match fieldIndexByName & reader case with
287287 | ValueSome ( i, f) ->
288288 fieldsFound <- fieldsFound + 1
289- fields. [ i] <- readField & reader case f options
289+ fields[ i] <- readField & reader case f options
290290 | _ ->
291291 reader.Skip()
292292 | _ -> ()
@@ -314,7 +314,7 @@ type JsonUnionConverter<'T>
314314 case.Ctor [| field |] :?> 'T
315315 | ValueNone ->
316316 if case.UnwrappedSingleField then
317- let field = readField & reader case case.Fields. [0 ] options
317+ let field = readField & reader case case.Fields[ 0 ] options
318318 case.Ctor [| field |] :?> 'T
319319 elif namedFields then
320320 readFieldsAsObject & reader case options
@@ -397,7 +397,7 @@ type JsonUnionConverter<'T>
397397 let fields = case.Fields
398398 let values = case.Dector value
399399 for i in 0 .. fields.Length-1 do
400- JsonSerializer.Serialize( writer, values. [ i], fields. [ i]. Type, options)
400+ JsonSerializer.Serialize( writer, values[ i], fields[ i]. Type, options)
401401 writer.WriteEndArray()
402402
403403 let writeFieldsAsArray ( writer : Utf8JsonWriter ) ( case : Case ) ( value : obj ) ( options : JsonSerializerOptions ) =
@@ -408,8 +408,8 @@ type JsonUnionConverter<'T>
408408 let fields = case.Fields
409409 let values = case.Dector value
410410 for i in 0 .. fields.Length-1 do
411- let f = fields. [ i]
412- let v = values. [ i]
411+ let f = fields[ i]
412+ let v = values[ i]
413413 if not ( options.IgnoreNullValues && isNull v) && not ( f.IsSkip v) then
414414 writer.WritePropertyName( f.Name)
415415 JsonSerializer.Serialize( writer, v, f.Type, options)
@@ -418,7 +418,7 @@ type JsonUnionConverter<'T>
418418 let writeFieldsAsRestOfObject ( writer : Utf8JsonWriter ) ( case : Case ) ( value : obj ) ( options : JsonSerializerOptions ) =
419419 match case.UnwrappedRecordField with
420420 | ValueSome conv ->
421- conv.WriteRestOfObject( writer, ( case.Dector value). [ 0 ], options)
421+ conv.WriteRestOfObject( writer, ( case.Dector value)[ 0 ], options)
422422 | ValueNone ->
423423 coreWriteFieldsAsRestOfObject writer case value options
424424
@@ -428,7 +428,7 @@ type JsonUnionConverter<'T>
428428
429429 let writeFields ( writer : Utf8JsonWriter ) case value ( options : JsonSerializerOptions ) =
430430 if case.UnwrappedSingleField then
431- JsonSerializer.Serialize( writer, ( case.Dector value). [ 0 ], case.Fields. [0 ]. Type, options)
431+ JsonSerializer.Serialize( writer, ( case.Dector value)[ 0 ], case.Fields[ 0 ]. Type, options)
432432 elif namedFields then
433433 writeFieldsAsObject writer case value options
434434 else
@@ -463,7 +463,7 @@ type JsonUnionConverter<'T>
463463
464464 override _.Read ( reader , _typeToConvert , options ) =
465465 match reader.TokenType with
466- | JsonTokenType.Null when Helpers. isNullableUnion ty ->
466+ | JsonTokenType.Null when isNullableUnion ty ->
467467 ( null : obj) :?> 'T
468468 | JsonTokenType.String when unwrapFieldlessTags ->
469469 let case = getCaseByTagReader & reader
@@ -484,7 +484,7 @@ type JsonUnionConverter<'T>
484484 if isNull value then writer.WriteNullValue() else
485485
486486 let tag = tagReader value
487- let case = cases. [ tag]
487+ let case = cases[ tag]
488488 if unwrapFieldlessTags && case.Fields.Length = 0 then
489489 writer.WriteStringValue( case.Name)
490490 else
@@ -543,7 +543,7 @@ type JsonUnwrappedUnionConverter<'T, 'FieldT>(case: UnionCaseInfo) =
543543 :?> 'T
544544
545545 override _.Write ( writer , value , options ) =
546- JsonSerializer.Serialize< 'FieldT>( writer, ( getter value). [ 0 ] :?> 'FieldT, options)
546+ JsonSerializer.Serialize< 'FieldT>( writer, ( getter value)[ 0 ] :?> 'FieldT, options)
547547
548548type JsonUnionConverter ( fsOptions : JsonFSharpOptions ) =
549549 inherit JsonConverterFactory()
@@ -602,11 +602,11 @@ type JsonUnionConverter(fsOptions: JsonFSharpOptions) =
602602 let isUnwrappedSingleCase =
603603 fsOptions.UnionEncoding.HasFlag JsonUnionEncoding.UnwrapSingleCaseUnions
604604 && cases.Length = 1
605- && ( fields <- cases. [0 ]. GetFields(); fields.Length = 1 )
605+ && ( fields <- cases[ 0 ]. GetFields(); fields.Length = 1 )
606606 if isUnwrappedSingleCase then
607- let case = cases. [0 ]
607+ let case = cases[ 0 ]
608608 jsonUnwrappedUnionConverterTy
609- .MakeGenericType([| typeToConvert; fields. [0 ]. PropertyType|])
609+ .MakeGenericType([| typeToConvert; fields[ 0 ]. PropertyType|])
610610 .GetConstructor([| caseTy|])
611611 .Invoke([| case|])
612612 :?> JsonConverter
0 commit comments