상세 컨텐츠

본문 제목

[.NET] JsonSerializer.Serialize 한글 적용

.NET

by 코딩하는 박줄기 2022. 10. 10. 01:45

본문

728x90
반응형

JsonSerializer.Serialize는 기본적으로 ASCII가 아닌 문자를 모두 이스케이프합니다. 즉, ASCII가 아닌 문자를 \uxxxx로 바꾸며, 여기서 xxxx는 문자의 유니코드 코드입니다. 하나 이상의 언어 문자 세트를 이스케이프하지 않고 직렬화하려면 System.Text.Encodings.Web.JavaScriptEncoder 인스턴스를 만들 때 유니코드 범위를 지정합니다.

 

준비

using System.Text.Encodings.Web;
using System.Text.Json;
using System.Text.Unicode;

 

한글 직렬화 예제(개체를 JSON으로)

var options = new JsonSerializerOptions
{
    //문자 인코딩을 사용자 지정, BasicLatin : 로마자 기본, HangulSyllables : 한글 음절
    Encoder = JavaScriptEncoder.Create(UnicodeRanges.BasicLatin, UnicodeRanges.HangulSyllables),
};

var dic = new Dictionary<string, string>()
{
    { "Name", "진우" },
    { "Favoritefodd", "소고기" }
};

string jsonString = JsonSerializer.Serialize(dic, options);
Console.WriteLine(jsonString);

//output : 
{"Name":"진우","Favoritefodd":"소고기"}

 

모든 문자 직렬화

var options = new JsonSerializerOptions
{
    //UnicodeRanges.All : Gets a range that consists of the entire Basic Multilingual Plane (BMP), from U+0000 to U+FFFF).
    Encoder = JavaScriptEncoder.Create(UnicodeRanges.All),
};

var dic = new Dictionary<string, string>()
{
    { "Name", "진우" },
    { "Favoritefodd", "소고기" }
};

string jsonString = JsonSerializer.Serialize(dic, options);
Console.WriteLine(jsonString);

//output : 
{"Name":"진우","Favoritefodd":"소고기"}

 

참조

728x90
반응형

관련글 더보기

댓글 영역