JsonNode.Parse()似乎將 my <and轉換>為轉義序列\u003C,并且\u003E當它們出現在 double-quotes中時""。
如何將這些轉義序列轉換回其原始字符?
這是我的 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 方法,但它們不適合這種情況。
uj5u.com熱心網友回復:
json 仍然有效,但我通常總是建議使用 Neftonsoft.Json,因為它的問題要少得多,但您也可以使用字串 Replace
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);
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/484541.html
