Сериализация JSON выводится в UTF-8 коде
Код:
class Dictinory
{
public string Arab { get; set; }
public string Rus { get; set; }
}
class Program
{
static void Main(string[] args)
{
Dictinory dictinory = new Dictinory { Rus = "выходить", Arab = "خَرَجَ "};
string json = JsonSerializer.Serialize<Dictinory>(dictinory);
Console.WriteLine(json);
Console.ReadLine();
}
}
Результат в консоли таков:
{"Arab":"\u062E\u064E\u0631\u064E\u062C\u064E ","Rus":"\u0432\u044B\u0445\u043E\u0434\u0438\u0442\u044C"}
Как решить данную проблему?
Ответы (1 шт):
Автор решения: aepot
→ Ссылка
Как сериализировать и десериализировать JSON в .NET
Dictinory dictinory = new Dictinory { Rus = "выходить", Arab = "خَرَجَ "};
Console.OutputEncoding = Encoding.UTF8;
JsonSerializerOptions options = new JsonSerializerOptions
{
Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping,
WriteIndented = true
};
string json = JsonSerializer.Serialize<Dictinory>(dictinory, options);
Console.WriteLine(json);
Поставьте еще подходящий шрифт в консоли, например Currier New в настройках окна консоли.
Получится вывод:
{
"Arab": "خَرَجَ ",
"Rus": "выходить"
}
А если по делу, в вашем JSON нет проблемы, он просто представлен в виде Escapе-последовательностей символов юникода. Если вы передадите к примеру этот JSON на сервер, то он без проблем десереализаует это обратно. Ну или сами десереализуйте обратно, чтобы убедиться, что процесс обратимый.