diff --git a/.github/workflows/check_updates.yml b/.github/workflows/check_updates.yml
index 49e1ca6..46782be 100644
--- a/.github/workflows/check_updates.yml
+++ b/.github/workflows/check_updates.yml
@@ -22,7 +22,7 @@ jobs:
- uses: denoland/setup-deno@v1
- uses: actions/setup-dotnet@v1
with:
- dotnet-version: "7.0.x"
+ dotnet-version: "8.0.x"
- name: Run script
run: |
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 6169783..2be6d56 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -19,7 +19,7 @@ jobs:
- uses: denoland/setup-deno@v1
- uses: actions/setup-dotnet@v1
with:
- dotnet-version: "7.0.x"
+ dotnet-version: "8.0.x"
- name: Build (Debug)
run: dotnet build DprintPluginRoslyn
@@ -42,7 +42,7 @@ jobs:
- name: Package
run: |
- RELEASE_DIR=$GITHUB_WORKSPACE/DprintPluginRoslyn/bin/Release/net7.0
+ RELEASE_DIR=$GITHUB_WORKSPACE/DprintPluginRoslyn/bin/Release/net8.0
# cd to each output directory so we only include its files
cd $RELEASE_DIR/osx-x64
zip -r ../../../../../dprint-plugin-roslyn-x86_64-apple-darwin.zip ./*
diff --git a/DprintPluginRoslyn.Tests/DprintPluginRoslyn.Tests.csproj b/DprintPluginRoslyn.Tests/DprintPluginRoslyn.Tests.csproj
index d163fa0..6c580a9 100644
--- a/DprintPluginRoslyn.Tests/DprintPluginRoslyn.Tests.csproj
+++ b/DprintPluginRoslyn.Tests/DprintPluginRoslyn.Tests.csproj
@@ -1,7 +1,7 @@
- net7.0
+ net8.0
false
diff --git a/DprintPluginRoslyn/DprintPluginRoslyn.csproj b/DprintPluginRoslyn/DprintPluginRoslyn.csproj
index a073d2a..95b60da 100644
--- a/DprintPluginRoslyn/DprintPluginRoslyn.csproj
+++ b/DprintPluginRoslyn/DprintPluginRoslyn.csproj
@@ -2,7 +2,7 @@
Exe
- net7.0
+ net8.0
Dprint.Plugins.Roslyn
dprint-plugin-roslyn
enable
@@ -18,7 +18,6 @@
-
diff --git a/DprintPluginRoslyn/Serialization/JsonSerializer.cs b/DprintPluginRoslyn/Serialization/JsonSerializer.cs
index d778676..3bceaea 100644
--- a/DprintPluginRoslyn/Serialization/JsonSerializer.cs
+++ b/DprintPluginRoslyn/Serialization/JsonSerializer.cs
@@ -1,32 +1,59 @@
-using Newtonsoft.Json;
-using Newtonsoft.Json.Serialization;
-using System;
-using System.Text;
+using System;
namespace Dprint.Plugins.Roslyn.Serialization;
+using System.Text;
+using System.Text.Json;
+using System.Text.Json.Serialization;
+
public class JsonSerializer
{
public T Deserialize(byte[] jsonData)
{
var jsonText = Encoding.UTF8.GetString(jsonData);
- return JsonConvert.DeserializeObject(jsonText, GetSettings()) ?? throw new Exception("Error deserializing JSON.");
+ return System.Text.Json.JsonSerializer.Deserialize(jsonText, GetSettings()) ?? throw new Exception("Error deserializing JSON.");
}
public byte[] Serialize(T obj)
{
- var jsonText = JsonConvert.SerializeObject(obj, GetSettings()) ?? throw new Exception("Error serializing to JSON.");
+ var jsonText = System.Text.Json.JsonSerializer.Serialize(obj, GetSettings()) ?? throw new Exception("Error serializing to JSON.");
return Encoding.UTF8.GetBytes(jsonText);
}
- private JsonSerializerSettings GetSettings()
+ private JsonSerializerOptions GetSettings()
{
- return new JsonSerializerSettings
+ return new JsonSerializerOptions
{
- ContractResolver = new DefaultContractResolver
+ PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
+ Converters =
{
- NamingStrategy = new CamelCaseNamingStrategy()
+ new ObjectToInferredTypesConverter(),
}
};
}
+
+ // Match Newtonsoft Behaviour
+ // https://learn.microsoft.com/en-us/dotnet/standard/serialization/system-text-json/migrate-from-newtonsoft?pivots=dotnet-8-0#deserialization-of-object-properties
+ private class ObjectToInferredTypesConverter : JsonConverter