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)