diff --git a/v2rayN/ServiceLib/Common/JsonUtils.cs b/v2rayN/ServiceLib/Common/JsonUtils.cs index 7e2b7f78..951cdbd7 100644 --- a/v2rayN/ServiceLib/Common/JsonUtils.cs +++ b/v2rayN/ServiceLib/Common/JsonUtils.cs @@ -17,6 +17,13 @@ public class JsonUtils Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping }; + private static readonly JsonSerializerOptions _defaultSerializeNoIndentedOptions = new() + { + WriteIndented = false, + DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull, + Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }; + private static readonly JsonSerializerOptions _nullValueSerializeOptions = new() { WriteIndented = true, @@ -24,6 +31,13 @@ public class JsonUtils Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping }; + private static readonly JsonSerializerOptions _nullValueSerializeNoIndentedOptions = new() + { + WriteIndented = false, + DefaultIgnoreCondition = JsonIgnoreCondition.Never, + Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping + }; + private static readonly JsonDocumentOptions _defaultDocumentOptions = new() { CommentHandling = JsonCommentHandling.Skip @@ -104,7 +118,13 @@ public class JsonUtils { return result; } - var options = nullValue ? _nullValueSerializeOptions : _defaultSerializeOptions; + var options = (nullValue, indented) switch + { + (true, true) => _nullValueSerializeOptions, + (true, false) => _nullValueSerializeNoIndentedOptions, + (false, true) => _defaultSerializeOptions, + _ => _defaultSerializeNoIndentedOptions + }; result = JsonSerializer.Serialize(obj, options); } catch (Exception ex)