Skip to content

Commit f7fc4d1

Browse files
niemyjskiCopilot
andcommitted
Replace Newtonsoft.Json with System.Text.Json 10.x
- Remove vendored Newtonsoft.Json (entire src/Exceptionless/Newtonsoft.Json/ directory) - Remove update-json.ps1 script - Add System.Text.Json 10.0.0 NuGet package reference - Rewrite DefaultJsonSerializer using System.Text.Json with: - SnakeCaseNamingPolicy matching legacy Newtonsoft behavior (e.g. OSName -> o_s_name) - Per-type snake_case applied only to Exceptionless.Models namespace - DataDictionaryConverter for storing complex values as JSON strings - SettingsDictionaryConverter for ObservableDictionary-based type - ObjectToInferredTypesConverter for proper type inference - PostDataConverter to convert object/array PostData to indented strings - Custom WriteValue with depth limiting and property exclusion support - Update all model classes to remove [JsonObject] attributes - Add [JsonPropertyName] for EnvironmentInfo OS properties - Update DefaultSubmissionClient to use JsonDocument instead of JObject - All 300 tests pass Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 5eb567a commit f7fc4d1

264 files changed

Lines changed: 539 additions & 68084 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

src/Exceptionless/EventBuilder.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ public EventBuilder AddTags(params string[] tags) {
115115

116116
/// <summary>
117117
/// Sets an extended property value to include with the event. Use either <paramref name="excludedPropertyNames" /> or
118-
/// <see cref="Exceptionless.Json.ExceptionlessIgnoreAttribute" /> to exclude data from being included in the event report.
118+
/// <see cref="System.Text.Json.Serialization.JsonIgnoreAttribute" /> to exclude data from being included in the event report.
119119
/// </summary>
120120
/// <param name="name">The name of the object to add.</param>
121121
/// <param name="value">The data object to add.</param>
@@ -131,7 +131,7 @@ public EventBuilder SetProperty(string name, object value, int? maxDepth = null,
131131

132132
/// <summary>
133133
/// Adds the object to extended data. Use either <paramref name="excludedPropertyNames" /> or
134-
/// <see cref="Exceptionless.Json.ExceptionlessIgnoreAttribute" /> to exclude data from being included in the event.
134+
/// <see cref="System.Text.Json.Serialization.JsonIgnoreAttribute" /> to exclude data from being included in the event.
135135
/// </summary>
136136
/// <param name="data">The data object to add.</param>
137137
/// <param name="name">The name of the object to add.</param>

src/Exceptionless/Exceptionless.csproj

Lines changed: 2 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,30 +23,18 @@
2323
<None Include="readme.txt" pack="true" PackagePath="." />
2424
</ItemGroup>
2525

26-
<ItemGroup Label="Build">
27-
<EmbeddedResource Include="Newtonsoft.Json\Dynamic.snk">
28-
<Link>Exceptionless.Json.Dynamic.snk</Link>
29-
</EmbeddedResource>
30-
</ItemGroup>
31-
32-
<PropertyGroup Condition="'$(TargetFramework)' == 'netstandard2.0'" Label="Build">
33-
<DefineConstants>$(DefineConstants);NETSTANDARD;NETSTANDARD2_0;HAVE_ADO_NET;HAVE_APP_DOMAIN;HAVE_ASYNC;HAVE_BIG_INTEGER;HAVE_BINARY_FORMATTER;HAVE_BINARY_SERIALIZATION;HAVE_BINARY_EXCEPTION_SERIALIZATION;HAVE_CHAR_TO_LOWER_WITH_CULTURE;HAVE_CHAR_TO_STRING_WITH_CULTURE;HAVE_COM_ATTRIBUTES;HAVE_COMPONENT_MODEL;HAVE_CONCURRENT_COLLECTIONS;HAVE_COVARIANT_GENERICS;HAVE_DATA_CONTRACTS;HAVE_DATE_TIME_OFFSET;HAVE_DB_NULL_TYPE_CODE;HAVE_DYNAMIC;HAVE_EMPTY_TYPES;HAVE_ENTITY_FRAMEWORK;HAVE_EXPRESSIONS;HAVE_FAST_REVERSE;HAVE_FSHARP_TYPES;HAVE_FULL_REFLECTION;HAVE_GUID_TRY_PARSE;HAVE_HASH_SET;HAVE_ICLONEABLE;HAVE_ICONVERTIBLE;HAVE_IGNORE_DATA_MEMBER_ATTRIBUTE;HAVE_INOTIFY_COLLECTION_CHANGED;HAVE_INOTIFY_PROPERTY_CHANGING;HAVE_ISET;HAVE_LINQ;HAVE_MEMORY_BARRIER;HAVE_METHOD_IMPL_ATTRIBUTE;HAVE_NON_SERIALIZED_ATTRIBUTE;HAVE_READ_ONLY_COLLECTIONS;HAVE_SECURITY_SAFE_CRITICAL_ATTRIBUTE;HAVE_SERIALIZATION_BINDER_BIND_TO_NAME;HAVE_STREAM_READER_WRITER_CLOSE;HAVE_STRING_JOIN_WITH_ENUMERABLE;HAVE_TIME_SPAN_PARSE_WITH_CULTURE;HAVE_TIME_SPAN_TO_STRING_WITH_CULTURE;HAVE_TIME_ZONE_INFO;HAVE_TRACE_WRITER;HAVE_TYPE_DESCRIPTOR;HAVE_UNICODE_SURROGATE_DETECTION;HAVE_VARIANT_TYPE_PARAMETERS;HAVE_VERSION_TRY_PARSE;HAVE_XLINQ;HAVE_XML_DOCUMENT;HAVE_XML_DOCUMENT_TYPE;HAVE_CONCURRENT_DICTIONARY;</DefineConstants>
34-
</PropertyGroup>
35-
3626
<ItemGroup Condition="'$(TargetFramework)' == 'netstandard2.0'" Label="Package References">
3727
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="8.0.0" />
3828
<PackageReference Include="System.Reflection.Emit.Lightweight" Version="4.7.0" />
3929
</ItemGroup>
4030

4131
<ItemGroup>
4232
<PackageReference Include="System.Reflection.Metadata" Version="8.0.1" />
33+
<PackageReference Include="System.Reflection.Metadata" Version="10.0.5" />
34+
<PackageReference Include="System.Text.Json" Version="10.0.0" />
4335
<PackageReference Include="System.Threading.Tasks.Extensions" Version="4.6.3" />
4436
</ItemGroup>
4537

46-
<PropertyGroup Condition="'$(TargetFramework)' == 'net462'" Label="Build">
47-
<DefineConstants>$(DefineConstants);NET45;HAVE_ADO_NET;HAVE_APP_DOMAIN;HAVE_ASYNC;HAVE_BIG_INTEGER;HAVE_BINARY_FORMATTER;HAVE_BINARY_SERIALIZATION;HAVE_BINARY_EXCEPTION_SERIALIZATION;HAVE_CAS;HAVE_CHAR_TO_LOWER_WITH_CULTURE;HAVE_CHAR_TO_STRING_WITH_CULTURE;HAVE_COM_ATTRIBUTES;HAVE_COMPONENT_MODEL;HAVE_CONCURRENT_COLLECTIONS;HAVE_COVARIANT_GENERICS;HAVE_DATA_CONTRACTS;HAVE_DATE_TIME_OFFSET;HAVE_DB_NULL_TYPE_CODE;HAVE_DYNAMIC;HAVE_EMPTY_TYPES;HAVE_ENTITY_FRAMEWORK;HAVE_EXPRESSIONS;HAVE_FAST_REVERSE;HAVE_FSHARP_TYPES;HAVE_FULL_REFLECTION;HAVE_GUID_TRY_PARSE;HAVE_HASH_SET;HAVE_ICLONEABLE;HAVE_ICONVERTIBLE;HAVE_IGNORE_DATA_MEMBER_ATTRIBUTE;HAVE_INOTIFY_COLLECTION_CHANGED;HAVE_INOTIFY_PROPERTY_CHANGING;HAVE_ISET;HAVE_LINQ;HAVE_MEMORY_BARRIER;HAVE_METHOD_IMPL_ATTRIBUTE;HAVE_NON_SERIALIZED_ATTRIBUTE;HAVE_READ_ONLY_COLLECTIONS;HAVE_REFLECTION_EMIT;HAVE_SECURITY_SAFE_CRITICAL_ATTRIBUTE;HAVE_SERIALIZATION_BINDER_BIND_TO_NAME;HAVE_STREAM_READER_WRITER_CLOSE;HAVE_STRING_JOIN_WITH_ENUMERABLE;HAVE_TIME_SPAN_PARSE_WITH_CULTURE;HAVE_TIME_SPAN_TO_STRING_WITH_CULTURE;HAVE_TIME_ZONE_INFO;HAVE_TRACE_WRITER;HAVE_TYPE_DESCRIPTOR;HAVE_UNICODE_SURROGATE_DETECTION;HAVE_VARIANT_TYPE_PARAMETERS;HAVE_VERSION_TRY_PARSE;HAVE_XLINQ;HAVE_XML_DOCUMENT;HAVE_XML_DOCUMENT_TYPE;HAVE_CONCURRENT_DICTIONARY;</DefineConstants>
48-
</PropertyGroup>
49-
5038
<ItemGroup Condition="'$(TargetFramework)' == 'net462'" Label="Framework References">
5139
<Reference Include="Microsoft.VisualBasic" />
5240
<Reference Include="System.Configuration" />

src/Exceptionless/Models/Client/ClientConfiguration.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
namespace Exceptionless.Models {
2-
[Json.JsonObject(NamingStrategyType = typeof(Json.Serialization.SnakeCaseNamingStrategy))]
2+
33
public class ClientConfiguration {
44
public ClientConfiguration() {
55
Settings = new SettingsDictionary();
66
}
77

88
public int Version { get; set; }
9-
public SettingsDictionary Settings { get; private set; }
9+
public SettingsDictionary Settings { get; set; }
1010

1111
public void IncrementVersion() {
1212
Version++;

src/Exceptionless/Models/Client/Data/EnvironmentInfo.cs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
1+
using System.Text.Json.Serialization;
2+
13
namespace Exceptionless.Models.Data {
2-
[Json.JsonObject(NamingStrategyType = typeof(Json.Serialization.SnakeCaseNamingStrategy))]
34
public class EnvironmentInfo : IData {
45
public EnvironmentInfo() {
56
Data = new DataDictionary();
@@ -67,13 +68,13 @@ public EnvironmentInfo() {
6768
/// <summary>
6869
/// The OS name that the error occurred on.
6970
/// </summary>
70-
[Json.JsonProperty("o_s_name")]
71+
[JsonPropertyName("o_s_name")]
7172
public string OSName { get; set; }
7273

7374
/// <summary>
7475
/// The OS version that the error occurred on.
7576
/// </summary>
76-
[Json.JsonProperty("o_s_version")]
77+
[JsonPropertyName("o_s_version")]
7778
public string OSVersion { get; set; }
7879

7980
/// <summary>

src/Exceptionless/Models/Client/Data/Error.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
namespace Exceptionless.Models.Data {
2-
[Json.JsonObject(NamingStrategyType = typeof(Json.Serialization.SnakeCaseNamingStrategy))]
2+
33
public class Error : InnerError {
44
public Error() {
55
Modules = new ModuleCollection();

src/Exceptionless/Models/Client/Data/InnerError.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
namespace Exceptionless.Models.Data {
2-
[Json.JsonObject(NamingStrategyType = typeof(Json.Serialization.SnakeCaseNamingStrategy))]
2+
33
public class InnerError : IData {
44
public InnerError() {
55
Data = new DataDictionary();

src/Exceptionless/Models/Client/Data/ManualStackingInfo.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
using Exceptionless.Extensions;
44

55
namespace Exceptionless.Models.Data {
6-
[Json.JsonObject(NamingStrategyType = typeof(Json.Serialization.SnakeCaseNamingStrategy))]
6+
77
public class ManualStackingInfo {
88
public ManualStackingInfo() {
99
SignatureData = new Dictionary<string, string>();

src/Exceptionless/Models/Client/Data/Method.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Collections.Generic;
33

44
namespace Exceptionless.Models.Data {
5-
[Json.JsonObject(NamingStrategyType = typeof(Json.Serialization.SnakeCaseNamingStrategy))]
5+
66
public class Method : IData {
77
public Method() {
88
Data = new DataDictionary();

src/Exceptionless/Models/Client/Data/Module.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Text;
33

44
namespace Exceptionless.Models.Data {
5-
[Json.JsonObject(NamingStrategyType = typeof(Json.Serialization.SnakeCaseNamingStrategy))]
5+
66
public class Module : IData {
77
public Module() {
88
Data = new DataDictionary();

src/Exceptionless/Models/Client/Data/Parameter.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
namespace Exceptionless.Models.Data {
2-
[Json.JsonObject(NamingStrategyType = typeof(Json.Serialization.SnakeCaseNamingStrategy))]
2+
33
public class Parameter : IData {
44
public Parameter() {
55
Data = new DataDictionary();

0 commit comments

Comments
 (0)