From 7d59c15b0efd2aa5a27aef356a265f850a2e7e2f Mon Sep 17 00:00:00 2001 From: 魏曹先生 <1992414357@qq.com> Date: Tue, 13 Jan 2026 06:24:07 +0800 Subject: Add JSON result getters for command outputs --- CommandLineWrapper/JsonResults/JsonResultGetter.cs | 31 ++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 CommandLineWrapper/JsonResults/JsonResultGetter.cs (limited to 'CommandLineWrapper/JsonResults/JsonResultGetter.cs') diff --git a/CommandLineWrapper/JsonResults/JsonResultGetter.cs b/CommandLineWrapper/JsonResults/JsonResultGetter.cs new file mode 100644 index 0000000..e1bf607 --- /dev/null +++ b/CommandLineWrapper/JsonResults/JsonResultGetter.cs @@ -0,0 +1,31 @@ +using static JVCSCommandInvoker; + +namespace CommandLineWrapper.JsonResults +{ + public abstract class JsonResultGetter + { + protected abstract Task ExecCommand(JVCSWorkspace workspace); + + public async Task Get(JVCSWorkspace workspace) + { + var result = await ExecCommand(workspace); + var output = result.StandardOutput; + + string trimmedOutput = output?.Trim() ?? "{}"; + if (!string.IsNullOrEmpty(trimmedOutput) && trimmedOutput.StartsWith("{") && trimmedOutput.EndsWith("}")) + { + var options = new System.Text.Json.JsonSerializerOptions + { + PropertyNameCaseInsensitive = true, + PropertyNamingPolicy = null, + }; + + options.Converters.Add(new System.Text.Json.Serialization.JsonStringEnumConverter()); + + return System.Text.Json.JsonSerializer.Deserialize(trimmedOutput, options); + } + + return default(TJsonFormat); + } + } +} -- cgit