[英]JsonNode.Parse: error parsing text with accents
我正在尝试使用 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\ón ”
我也尝试过其他编码和代码页,例如UTF8具有相同的结果......
¿知道如何解析带重音的文本吗?
提前致谢。
目前JsonNode.Parse()
没有提供类似于 JsonSerializer 的设置Encoder
的方法。
您有两个选择:
改用JsonSerializer
并按照上面链接中的提示进行操作。
使用JsonNode
解析后JsonNode
转义字符串值:
var expectedValue = Regex.Unescape(jTemplate["key"].ToString());
我可以为您提供使用 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; }
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.