From 436d95576ec6cb612590524fa3335e2b30966639 Mon Sep 17 00:00:00 2001 From: 2dust <31833384+2dust@users.noreply.github.com> Date: Fri, 12 Sep 2025 16:45:55 +0800 Subject: [PATCH] Optimization and improvement JsonUtils --- v2rayN/ServiceLib/Common/JsonUtils.cs | 40 +++++++++++++++++++-------- 1 file changed, 28 insertions(+), 12 deletions(-) diff --git a/v2rayN/ServiceLib/Common/JsonUtils.cs b/v2rayN/ServiceLib/Common/JsonUtils.cs index 6954e124..4fbaa0e1 100644 --- a/v2rayN/ServiceLib/Common/JsonUtils.cs +++ b/v2rayN/ServiceLib/Common/JsonUtils.cs @@ -9,6 +9,31 @@ public class JsonUtils { private static readonly string _tag = "JsonUtils"; + private static readonly JsonSerializerOptions _defaultDeserializeOptions = new() + { + PropertyNameCaseInsensitive = true, + ReadCommentHandling = JsonCommentHandling.Skip + }; + + private static readonly JsonSerializerOptions _defaultSerializeOptions = new() + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, + Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }; + + private static readonly JsonSerializerOptions _nullValueSerializeOptions = new() + { + WriteIndented = true, + DefaultIgnoreCondition = JsonIgnoreCondition.Never, + Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }; + + private static readonly JsonDocumentOptions _defaultDocumentOptions = new() + { + CommentHandling = JsonCommentHandling.Skip + }; + /// /// DeepCopy /// @@ -34,11 +59,7 @@ public class JsonUtils { return default; } - var options = new JsonSerializerOptions - { - PropertyNameCaseInsensitive = true - }; - return JsonSerializer.Deserialize(strJson, options); + return JsonSerializer.Deserialize(strJson, _defaultDeserializeOptions); } catch { @@ -59,7 +80,7 @@ public class JsonUtils { return null; } - return JsonNode.Parse(strJson); + return JsonNode.Parse(strJson, nodeOptions: null, _defaultDocumentOptions); } catch { @@ -84,12 +105,7 @@ public class JsonUtils { return result; } - var options = new JsonSerializerOptions - { - WriteIndented = indented, - DefaultIgnoreCondition = nullValue ? JsonIgnoreCondition.Never : JsonIgnoreCondition.WhenWritingNull, - Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping - }; + var options = nullValue ? _nullValueSerializeOptions : _defaultSerializeOptions; result = JsonSerializer.Serialize(obj, options); } catch (Exception ex)