我正在嘗試使用 System.Text.Json 類中的 JsonNode 的 Parse 方法決議拉丁文本。
但是當文本包含重音符號時,該方法回傳轉義字符。
var jsonString = File.ReadAllText(path, Encoding.GetEncoding(1252));
var jTemplate = JsonNode.Parse(jsonString);
物件“ jsonString ”包含正確的文本(帶重音)但是當我呼叫 JsonNode.Parse 物件“jTemplate”包含錯誤的文本
jsonString 中的“Ciberseguridad en la Organización”
jTemplate 中的“Ciberseguridad en la Organizaci\u00F3n ”
我也嘗試過其他編碼和代碼頁,例如UTF8具有相同的結果......
?知道如何決議帶重音的文本嗎?
提前致謝。
uj5u.com熱心網友回復:
我可以為您提供使用 JsonSerializer.Deserialize 方法,該方法接受 JsonSerializerOptions 物件,您可以在其中設定編碼器。
我的代碼示例的輸出是:
Ciberseguridad en la Organización
using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Unicode;
string jsonString = "{\"data\": \"Ciberseguridad en la organización\"}";
JsonSerializerOptions options = new JsonSerializerOptions()
{
Encoder = JavaScriptEncoder.Create(UnicodeRanges.All)
};
DataDto? jTemplate = JsonSerializer.Deserialize<DataDto>(jsonString, options);
Console.WriteLine(jTemplate.data);
class DataDto
{
public string data { get; set; }
}
uj5u.com熱心網友回復:
目前JsonNode.Parse()不提供設定Encoder 類似于 JsonSerializer 的方法。
您有兩個選擇:
使用
JsonSerializer替代,并按照提示從上面的鏈接。使用以下命令決議字串值后取消轉義
JsonNode:var expectedValue = Regex.Unescape(jTemplate["key"].ToString());
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/388623.html
上一篇:在linq中加入、分組和求和
