Skip to content

Commit 6bdf63b

Browse files
fix: prevent unicode escaping of '+' in variable get output (#183)
JsonNode.ToJsonString() uses JavaScriptEncoder.Default which unnecessarily escapes '+' (U+002B) as \u002b in the output. - VariableGetPipeline: use result.ToString() for console display to get the raw string value without JSON encoding artifacts - JsonNodeOutputFormatter: pass JavaScriptEncoder.UnsafeRelaxedJsonEscaping to ToJsonString() so --format json output preserves '+' literally
1 parent 0de0b14 commit 6bdf63b

2 files changed

Lines changed: 9 additions & 2 deletions

File tree

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,5 @@
1+
using System.Text.Encodings.Web;
2+
using System.Text.Json;
13
using System.Text.Json.Nodes;
24
using Confix.Tool.Commands.Logging;
35
using Confix.Tool.Reporting;
@@ -6,13 +8,18 @@ namespace Confix.Tool.Commands.Configuration;
68

79
public sealed class JsonNodeOutputFormatter : IOutputFormatter<JsonNode>
810
{
11+
private static readonly JsonSerializerOptions _options = new()
12+
{
13+
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping
14+
};
15+
916
/// <inheritdoc />
1017
public bool CanHandle(OutputFormat format, JsonNode value)
1118
=> format == OutputFormat.Json;
1219

1320
/// <inheritdoc />
1421
public Task<string> FormatAsync(OutputFormat format, JsonNode value)
1522
{
16-
return Task.FromResult(value.ToJsonString());
23+
return Task.FromResult(value.ToJsonString(_options));
1724
}
1825
}

src/Confix.Tool/src/Confix.Library/Pipelines/Variable/VariableGetPipeline.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ private static async Task InvokeAsync(IMiddlewareContext context)
3838
var result = await resolver
3939
.ResolveOrThrowAsync(variablePath, variableContext);
4040

41-
context.Logger.PrintVariableResolved(variablePath, result.ToJsonString());
41+
context.Logger.PrintVariableResolved(variablePath, result.ToString());
4242

4343
context.SetOutput(result);
4444
}

0 commit comments

Comments
 (0)