Skip to content

Commit 177a8cc

Browse files
authored
Changed JSON serializer to System.Text.Json to resolve Newtonsoft dependency issues between net472 and .net 9+ (SubnauticaNitrox#2589)
1 parent 6b2542e commit 177a8cc

2 files changed

Lines changed: 21 additions & 7 deletions

File tree

Nitrox.Launcher/Models/Design/ServerEntry.cs

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using System.IO;
55
using System.Linq;
66
using System.Runtime.InteropServices;
7+
using System.Text.Json;
78
using System.Text.RegularExpressions;
89
using System.Threading;
910
using System.Threading.Tasks;
@@ -21,7 +22,6 @@
2122
using Nitrox.Model.Serialization;
2223
using Nitrox.Model.Server;
2324
using Nitrox.Server.Subnautica.Models.Serialization;
24-
using Nitrox.Server.Subnautica.Models.Serialization.World;
2525

2626
namespace Nitrox.Launcher.Models.Design;
2727

@@ -162,12 +162,26 @@ public bool RefreshFromDirectory(string saveDir)
162162
Version serverVersion;
163163
using (FileStream stream = new(saveFileVersion, FileMode.Open, FileAccess.Read, FileShare.Read))
164164
{
165-
serverVersion = config.SerializerMode switch
165+
switch (config.SerializerMode)
166166
{
167-
ServerSerializerMode.JSON => new ServerJsonSerializer().Deserialize<SaveFileVersion>(stream)?.Version ?? NitroxEnvironment.Version,
168-
ServerSerializerMode.PROTOBUF => new ServerProtoBufSerializer().Deserialize<SaveFileVersion>(stream)?.Version ?? NitroxEnvironment.Version,
169-
_ => throw new NotImplementedException()
170-
};
167+
case ServerSerializerMode.JSON:
168+
SaveFileVersion versionModel;
169+
try
170+
{
171+
versionModel = JsonSerializer.Deserialize<SaveFileVersion>(stream);
172+
}
173+
catch (Exception)
174+
{
175+
versionModel = new SaveFileVersion(NitroxEnvironment.Version);
176+
}
177+
serverVersion = versionModel.Version;
178+
break;
179+
case ServerSerializerMode.PROTOBUF:
180+
serverVersion = new ServerProtoBufSerializer().Deserialize<SaveFileVersion>(stream)?.Version ?? NitroxEnvironment.Version;
181+
break;
182+
default:
183+
throw new NotImplementedException();
184+
}
171185
}
172186

173187
Name = Path.GetFileName(saveDir);

Nitrox.Server.Subnautica/Models/Serialization/World/SaveFileVersion.cs renamed to Nitrox.Model/Serialization/SaveFileVersion.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
using System.Runtime.Serialization;
33
using Nitrox.Model.Core;
44

5-
namespace Nitrox.Server.Subnautica.Models.Serialization.World;
5+
namespace Nitrox.Model.Serialization;
66

77
[DataContract]
88
public class SaveFileVersion

0 commit comments

Comments
 (0)