728x90
반응형
SMALL
Json파일을 문자열로 조합하여 잘 사용하고 있었는데, 어느 순간 역슬래쉬가 들어오면서 에러가 발생하였다.
Json문자열에 이런 특정 문자가 들어왔을 때,
즉, Json파일에 오류가 생기게 하는 문자를 처리하는 방법을 알아보도록 하자.

 

■ Json 파일 만드는 법

1. 직접 문자열 조립

- 데이터에 역슬래시(\), 따옴표("), 개행(\n), 탭(\t) 등이 들어 있으면 JSON 문법상 이스케이프 처리가 안 되어 있어 오류

string json = $"{{\"NAME\":\"좌표\", \"X\":{100}, \"Y\":{100}}}";

json = JsonConvert.DeserializeObject(json).ToString();     # Newtonsoft.Json 패키지 설치 필요

 

# 변수 json 출력

{

     "NAME": "좌표",

     "X": 100,

     "Y": 100

}

 

2. JsonSerializer로 생성 (System.Text.Json 사용)

  - System.Text.Json.JsonSerializer 가 내부적으로 모든 문자를 안전하게 이스케이프 처리

var options = new JsonSerializerOptions

{

     Encoder = System.Text.Encodings.Web.JavaScriptEncoder.UnsafeRelaxedJsonEscaping,

     WriteIndented = true

};

 

var data = new

{

     NAME = "좌표",

     X = 100,

     Y = 100

};

 

string json = JsonSerializer.Serialize(data, options);

 

# 변수 json 출력

{

     "NAME": "좌표",

     "X": 100,

     "Y": 100

}

 

3. 결론은 직접 문자열 조립은 위험하므로, 이스케이프 처리가 되는 JsonSerializer를 사용한다.

728x90
반응형
LIST

+ Recent posts