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)