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); } } }