Skip to content

Commit 8d345c5

Browse files
committed
Switch to System.Text.Json for (de)serializing
1 parent 922d6dd commit 8d345c5

File tree

4 files changed

+29
-30
lines changed

4 files changed

+29
-30
lines changed

src/DendroDocs.Tool/DendroDocs.Tool.csproj

-1
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,6 @@
4545
<PackageReference Include="Buildalyzer.Workspaces" Version="7.0.2" />
4646
<PackageReference Include="CommandLineParser" Version="2.9.1" />
4747
<PackageReference Include="DendroDocs.Shared" Version="0.2.1" />
48-
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
4948
<PackageReference Include="Newtonsoft.Json.Schema" Version="4.0.1" />
5049
<PackageReference Include="Microsoft.CodeAnalysis.CSharp.Workspaces" Version="4.11.0" />
5150
<PackageReference Include="Microsoft.CodeAnalysis.VisualBasic.Workspaces" Version="4.11.0" />

src/DendroDocs.Tool/Program.cs

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
using Newtonsoft.Json;
21
using System.Diagnostics;
2+
using System.Text.Json;
33

44
namespace DendroDocs.Tool;
55

@@ -39,10 +39,10 @@ private static async Task<int> RunApplicationAsync(Options options)
3939
stopwatch.Stop();
4040

4141
// Write analysis
42-
var serializerSettings = JsonDefaults.SerializerSettings();
43-
serializerSettings.Formatting = options.PrettyPrint ? Formatting.Indented : Formatting.None;
42+
var serializerSettings = JsonDefaults.SerializerOptions();
43+
serializerSettings.WriteIndented = options.PrettyPrint;
4444

45-
var result = JsonConvert.SerializeObject(types.OrderBy(t => t.FullName), serializerSettings);
45+
var result = JsonSerializer.Serialize(types.OrderBy(t => t.FullName), serializerSettings);
4646
File.WriteAllText(options.OutputPath!, result);
4747

4848
if (!options.Quiet)

tests/DendroDocs.Tool.Tests/DeserializationTests.cs

+17-17
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using DendroDocs.Json;
2-
using Newtonsoft.Json;
2+
using System.Text.Json;
33

44
namespace DendroDocs.Tool.Tests;
55

@@ -13,7 +13,7 @@ public void NoTypes_Should_GiveEmptyArray()
1313
var json = @"[]";
1414

1515
// Act
16-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
16+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
1717

1818
// Assert
1919
types.Should().BeEmpty();
@@ -26,7 +26,7 @@ public void AClassWithoutAModifierShouldBeInternalByDefault()
2626
var json = @"[{""FullName"":""Test""}]";
2727

2828
// Act
29-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
29+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
3030

3131
// Assert
3232
types.Should().HaveCount(1);
@@ -43,7 +43,7 @@ public void Collections_Should_NotBeNull()
4343
var json = @"[{""FullName"":""Test""}]";
4444

4545
// Act
46-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
46+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
4747

4848
// Assert
4949
types[0].Fields.Should().BeEmpty();
@@ -78,7 +78,7 @@ public void ModifiersShouldBeDeserializedCorrectly(int value, Modifier modifier)
7878
var json = @$"[{{""Modifiers"":{value},""FullName"":""Test""}}]";
7979

8080
// Act
81-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
81+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
8282

8383
// Assert
8484
types[0].Modifiers.Should().Be(modifier);
@@ -91,7 +91,7 @@ public void MembersOfAClassWithoutAModifierShouldBePrivateByDefault()
9191
var json = @"[{""FullName"":""Test"",""Methods"":[{""Name"":""Method""}]}]";
9292

9393
// Act
94-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
94+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
9595

9696
// Assert
9797
types[0].Methods.Should().HaveCount(1);
@@ -107,7 +107,7 @@ public void AttributeCollection_Should_GiveAttributeWithNameAndType()
107107
var json = @"[{""FullName"":""Test"",""Attributes"":[{""Type"":""System.ObsoleteAttribute"",""Name"":""System.Obsolete""}]}]";
108108

109109
// Act
110-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
110+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
111111

112112
// Assert
113113
types[0].Attributes.Should().HaveCount(1);
@@ -123,7 +123,7 @@ public void AttributeArgumentCollection_Should_GiveAttributeArgumentWithName_Typ
123123
var json = @"[{""FullName"":""Test"",""Attributes"":[{""Type"":""System.ObsoleteAttribute"",""Name"":""System.Obsolete"",""Arguments"":[{""Name"":""\""Reason\"""",""Type"":""string"",""Value"":""Reason""}]}]}]";
124124

125125
// Act
126-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
126+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
127127

128128
// Assert
129129
types[0].Attributes[0].Arguments.Should().HaveCount(1);
@@ -150,7 +150,7 @@ public void AStatementInAMethodBodyShouldHaveTheMethodAsParent()
150150
}]";
151151

152152
// Act
153-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
153+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
154154

155155
// Assert
156156
types[0].Methods[0].Statements[0].Parent.Should().Be(types[0].Methods[0]);
@@ -173,7 +173,7 @@ public void AStatementInAConstructorBodyShouldHaveTheConstructorAsParent()
173173
}]";
174174

175175
// Act
176-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
176+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
177177

178178
// Assert
179179
types[0].Constructors[0].Statements[0].Parent.Should().Be(types[0].Constructors[0]);
@@ -195,7 +195,7 @@ public void AnIfElseSectionShouldHaveTheIfAsParent()
195195
}]";
196196

197197
// Act
198-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
198+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
199199

200200
// Assert
201201
types[0].Methods[0].Statements[0].Should().BeOfType<If>();
@@ -220,7 +220,7 @@ public void AnIfElseConditionShouldBeParsedCorrectly()
220220
}]";
221221

222222
// Act
223-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
223+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
224224

225225
// Assert
226226
types[0].Methods[0].Statements[0].Should().BeOfType<If>();
@@ -251,7 +251,7 @@ public void AStatementInAnIfElseSectionShouldHaveTheIfElseSectionAsParent()
251251
}]";
252252

253253
// Act
254-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
254+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
255255

256256
// Assert
257257
types[0].Methods[0].Statements[0].Should().BeOfType<If>();
@@ -276,7 +276,7 @@ public void ASwitchSectionShouldHaveTheSwitchAsParent()
276276
}]";
277277

278278
// Act
279-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
279+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
280280

281281
// Assert
282282
types[0].Methods[0].Statements[0].Should().BeOfType<Switch>();
@@ -301,7 +301,7 @@ public void ASwitchExpressionShouldBeParsedCorrectly()
301301
}]";
302302

303303
// Act
304-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
304+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
305305

306306
// Assert
307307
types[0].Methods[0].Statements[0].Should().BeOfType<Switch>();
@@ -328,7 +328,7 @@ public void SwitchLabelsShouldBeParsedCorrectly()
328328
}]";
329329

330330
// Act
331-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
331+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
332332

333333
// Assert
334334
types[0].Methods[0].Statements[0].Should().BeOfType<Switch>();
@@ -360,7 +360,7 @@ public void AStatementInASwitchSectionShouldHaveTheSwitchSectionAsParent()
360360
}]";
361361

362362
// Act
363-
var types = JsonConvert.DeserializeObject<List<TypeDescription>>(json, JsonDefaults.DeserializerSettings());
363+
var types = JsonSerializer.Deserialize<List<TypeDescription>>(json, JsonDefaults.DeserializerOptions())!;
364364

365365
// Assert
366366
types[0].Methods[0].Statements[0].Should().BeOfType<Switch>();

tests/DendroDocs.Tool.Tests/SerializationTests.cs

+8-8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
using DendroDocs.Json;
2-
using Newtonsoft.Json;
2+
using System.Text.Json;
33

44
namespace DendroDocs.Tool.Tests
55
{
@@ -15,7 +15,7 @@ public void NoTypes_Should_GiveEmptyArray()
1515
// Act
1616
var types = TestHelper.VisitSyntaxTree(source);
1717

18-
var result = JsonConvert.SerializeObject(types, JsonDefaults.SerializerSettings());
18+
var result = JsonSerializer.Serialize(types, JsonDefaults.SerializerOptions());
1919

2020
// Assert
2121
result.Should().Be("[]");
@@ -30,7 +30,7 @@ public void InternalClass_Should_GiveOnlyFullName()
3030
// Act
3131
var types = TestHelper.VisitSyntaxTree(source);
3232

33-
var result = JsonConvert.SerializeObject(types, JsonDefaults.SerializerSettings());
33+
var result = JsonSerializer.Serialize(types, JsonDefaults.SerializerOptions());
3434

3535
// Assert
3636
result.Should().Be(@"[{""FullName"":""Test""}]");
@@ -45,7 +45,7 @@ public void PublicClass_Should_GiveOnlyNonDefaultModifier()
4545
// Act
4646
var types = TestHelper.VisitSyntaxTree(source);
4747

48-
var result = JsonConvert.SerializeObject(types, JsonDefaults.SerializerSettings());
48+
var result = JsonSerializer.Serialize(types, JsonDefaults.SerializerOptions());
4949

5050
// Assert
5151
result.Should().Be(@"[{""FullName"":""Test"",""Modifiers"":2}]");
@@ -62,7 +62,7 @@ void Method() {}
6262
// Act
6363
var types = TestHelper.VisitSyntaxTree(source);
6464

65-
var result = JsonConvert.SerializeObject(types, JsonDefaults.SerializerSettings());
65+
var result = JsonSerializer.Serialize(types, JsonDefaults.SerializerOptions());
6666

6767
// Assert
6868
result.Should().Be(@"[{""FullName"":""Test"",""Methods"":[{""Name"":""Method""}]}]");
@@ -79,7 +79,7 @@ public void PrivateNonVoidMethod_Should_GiveNameAndReturnType()
7979
// Act
8080
var types = TestHelper.VisitSyntaxTree(source);
8181

82-
var result = JsonConvert.SerializeObject(types, JsonDefaults.SerializerSettings());
82+
var result = JsonSerializer.Serialize(types, JsonDefaults.SerializerOptions());
8383

8484
// Assert
8585
result.Should().Match(@"[{""FullName"":""Test"",""Methods"":[{""Name"":""Method"",""ReturnType"":""int"",*}]}]");
@@ -97,7 +97,7 @@ class Test {
9797
// Act
9898
var types = TestHelper.VisitSyntaxTree(source);
9999

100-
var result = JsonConvert.SerializeObject(types, JsonDefaults.SerializerSettings());
100+
var result = JsonSerializer.Serialize(types, JsonDefaults.SerializerOptions());
101101

102102
// Assert
103103
result.Should().Match(@"[{""FullName"":""Test"",""Attributes"":[{""Type"":""System.ObsoleteAttribute"",""Name"":""System.Obsolete""}]}]");
@@ -115,7 +115,7 @@ class Test {
115115
// Act
116116
var types = TestHelper.VisitSyntaxTree(source);
117117

118-
var result = JsonConvert.SerializeObject(types, JsonDefaults.SerializerSettings());
118+
var result = JsonSerializer.Serialize(types, JsonDefaults.SerializerOptions());
119119

120120
// Assert
121121
result.Should().Match(@"[{""FullName"":""Test"",""Attributes"":[{""Type"":""System.ObsoleteAttribute"",""Name"":""System.Obsolete"",""Arguments"":[{""Name"":""message"",""Type"":""string"",""Value"":""Reason""}]}]}]");

0 commit comments

Comments
 (0)