@@ -4,7 +4,8 @@ module FSharpLint.Framework.Configuration
44open System
55open System.IO
66open System.Reflection
7- open Newtonsoft.Json
7+ open System.Text .Json
8+ open System.Text .Json .Serialization
89open FSharpLint.Framework
910open FSharpLint.Framework .Rules
1011open FSharpLint.Framework .HintParser
@@ -15,40 +16,16 @@ let SettingsFileName = "fsharplint.json"
1516
1617exception ConfigurationException of string
1718
18- module FSharpJsonConverter =
19- open Microsoft.FSharp .Reflection
20-
21- type OptionConverter () =
22- inherit JsonConverter()
23-
24- override x.CanConvert ( t ) =
25- t.IsGenericType && t.GetGenericTypeDefinition() = typedefof<_ option>
26-
27- override x.WriteJson ( writer , value , serializer ) =
28- let value =
29- if isNull value then null
30- else
31- let _ , fields = FSharpValue.GetUnionFields( value, value.GetType())
32- fields.[ 0 ]
33- serializer.Serialize( writer, value)
34-
35- override x.ReadJson ( reader , t , _ , serializer ) =
36- let innerType = t.GetGenericArguments().[ 0 ]
37- let innerType =
38- if innerType.IsValueType then ( typedefof< Nullable<_>>) .MakeGenericType([| innerType|])
39- else innerType
40- let value = serializer.Deserialize( reader, innerType)
41- let cases = FSharpType.GetUnionCases( t)
42- if isNull value then FSharpValue.MakeUnion( cases.[ 0 ], [||])
43- else FSharpValue.MakeUnion( cases.[ 1 ], [| value|])
44-
45- let private converters =
46- [|
47- OptionConverter() :> JsonConverter
48- |]
19+ module internal FSharpJsonConverter =
4920
50- let serializerSettings =
51- JsonSerializerSettings( NullValueHandling = NullValueHandling.Ignore, Converters = converters)
21+ let jsonOptions =
22+ let options =
23+ JsonSerializerOptions(
24+ PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
25+ DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
26+ )
27+ options.Converters.Add( JsonStringEnumConverter())
28+ options
5229
5330module IgnoreFiles =
5431
582559/// Tries to parse the provided config text.
583560let parseConfig ( configText : string ) =
584561 try
585- JsonConvert.DeserializeObject < Configuration>( configText, FSharpJsonConverter.serializerSettings )
562+ JsonSerializer.Deserialize < Configuration>( configText, FSharpJsonConverter.jsonOptions )
586563 with
587564 | ex -> raise <| ConfigurationException $" Couldn't parse config, error=%s {ex.Message}"
588565
0 commit comments