如何将这些转义序列转换回它们的原始字符?
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);
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);