如何将这些转义序列转换回它们的原始字符?

How can I convert these escape sequences back to their original characters?

JsonNode.Parse() 似乎将我的 <> 转换为转义序列 \u003C\u003E 当它们出现在双引号内时 "".

如何将这些转义序列转换回它们的原始字符?

这是我的 C# 代码:

using System.Text.Json.Nodes;
Console.WriteLine("JsonNode test");
var testString = "{ \"testString\" : \"<...>\" }";
Console.WriteLine($"{testString}, {testString.Length}");
var jsonNode = JsonNode.Parse(testString);
var jsonString = jsonNode.ToJsonString();
Console.WriteLine($"{jsonString}, {jsonString.Length}");

输出:

JsonNode test
{ "testString" : "<...>" }, 26
{"testString":"\u003C...\u003E"}, 32

我试过 HtmlDecode 和 UrlDecode 方法,但它们不适合这种情况。

json 仍然有效,但我通常总是建议使用 Neftonsoft.Json 因为它的问题要少得多,但你也可以使用字符串替换

var jsonNode = JsonNode.Parse(testString);
var jsonString = jsonNode.ToJsonString().Replace("\u003C","<").Replace("\u003E",">");

结果

{"testString":"<...>"}

另一种选择是使用UnsafeRelaxedJsonEscaping,但在某些情况下并不安全

var options = new JsonSerializerOptions
    {
        Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
        WriteIndented = true
    };
var jsonString = System.Text.Json.JsonSerializer.Serialize(jsonNode, options);